{-# LANGUAGE TemplateHaskell #-}

module XML.Selectors.CSS.TH (css) where

import XML.Selectors.CSS.Parse
import XML.Selectors.CSS
import Language.Haskell.TH.Quote
import Language.Haskell.TH

-- | @ [css| #interface div.doc:first-child |] @ would select this paragraph.
css :: QuasiQuoter
css = QuasiQuoter { quoteExp = cssExp, quotePat = undefined, quoteDec = undefined, quoteType = undefined }

cssExp s = appE [|toAxis |] $ either fail (dataToExpQ $ const Nothing) $ parsePath s