module Text.XML.Selector.TH (jq,queryT) where
import Language.Haskell.TH
import Language.Haskell.TH.Quote
import Language.Haskell.TH.Lift
import Text.Parsec
import Text.XML.Selector
import Text.XML.Cursor
import Text.Parsec
import Text.XML.Selector.Types
import Text.XML.Selector.Parser
import Data.Maybe
import qualified Data.Map as M
type Parser a = Parsec String () a
$(deriveLift ''JQSelector)
$(deriveLift ''TagAttr)
$(deriveLift ''RelPrev)
$(deriveLift ''AttrRel)
jqueryExpr :: String -> Q Exp
jqueryExpr str = do
case parseJQ str of
[] -> error "query: Invalid selector"
sels -> [| sels |]
jq :: QuasiQuoter
jq = QuasiQuoter jqueryExpr undefined undefined undefined
queryT :: [JQSelector] -> Axis
queryT sels = searchTree sels