{-# LANGUAGE TemplateHaskell #-} module Data.Geometry.Ipe.Literal where import Language.Haskell.TH import Language.Haskell.TH.Quote import qualified Data.Text as T import qualified Data.ByteString.Char8 as C import Text.XML.Expat.Tree literally :: String -> Q Exp literally :: String -> Q Exp literally = Exp -> Q Exp forall (m :: * -> *) a. Monad m => a -> m a return (Exp -> Q Exp) -> (String -> Exp) -> String -> Q Exp forall b c a. (b -> c) -> (a -> b) -> a -> c . Lit -> Exp LitE (Lit -> Exp) -> (String -> Lit) -> String -> Exp forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Lit StringL lit :: QuasiQuoter lit :: QuasiQuoter lit = QuasiQuoter :: (String -> Q Exp) -> (String -> Q Pat) -> (String -> Q Type) -> (String -> Q [Dec]) -> QuasiQuoter QuasiQuoter { quoteExp :: String -> Q Exp quoteExp = String -> Q Exp literally , quotePat :: String -> Q Pat quotePat = String -> Q Pat forall a. HasCallStack => a undefined , quoteType :: String -> Q Type quoteType = String -> Q Type forall a. HasCallStack => a undefined , quoteDec :: String -> Q [Dec] quoteDec = String -> Q [Dec] forall a. HasCallStack => a undefined } litFile :: QuasiQuoter litFile :: QuasiQuoter litFile = QuasiQuoter -> QuasiQuoter quoteFile QuasiQuoter lit xmlLiteral :: String -> Node T.Text T.Text xmlLiteral :: String -> Node Text Text xmlLiteral = (XMLParseError -> Node Text Text) -> (Node Text Text -> Node Text Text) -> Either XMLParseError (Node Text Text) -> Node Text Text forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (String -> String -> Node Text Text forall a. HasCallStack => String -> a error String "xmlLiteral. error parsing xml: " (String -> Node Text Text) -> (XMLParseError -> String) -> XMLParseError -> Node Text Text forall b c a. (b -> c) -> (a -> b) -> a -> c . XMLParseError -> String forall a. Show a => a -> String show) Node Text Text -> Node Text Text forall a. a -> a id (Either XMLParseError (Node Text Text) -> Node Text Text) -> (String -> Either XMLParseError (Node Text Text)) -> String -> Node Text Text forall b c a. (b -> c) -> (a -> b) -> a -> c . ParseOptions Text Text -> ByteString -> Either XMLParseError (Node Text Text) forall tag text. (GenericXMLString tag, GenericXMLString text) => ParseOptions tag text -> ByteString -> Either XMLParseError (Node tag text) parse' ParseOptions Text Text forall tag text. ParseOptions tag text defaultParseOptions (ByteString -> Either XMLParseError (Node Text Text)) -> (String -> ByteString) -> String -> Either XMLParseError (Node Text Text) forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ByteString C.pack