dom-selector-0.2.0.0: Text/XML/Selector/TH.hs
{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
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)
-- instance Lift JQSelector where
-- lift (JQSelector a b c d e) = [| JQSelector a b c d e |]
jqueryExpr :: String -> Q Exp
jqueryExpr str = do
case parseJQ str of
[] -> error "query: Invalid selector"
sels -> [| sels |]
-- | QuasiQuoter for CSS selector
jq :: QuasiQuoter
jq = QuasiQuoter jqueryExpr undefined undefined undefined
-- |Get 'Axis' from jQuery selector QQ.
--
-- >html = innerHtml $ cursor $| queryT [jq| ul.foo > li#bar |]
queryT :: [JQSelector] -> Axis
queryT sels = searchTree sels