yi-mode-haskell-0.13: test/Yi/Lexer/Helpers/TH.hs
module Yi.Lexer.Helpers.TH where
import Language.Haskell.TH
import Language.Haskell.TH.Quote
literally :: String -> Q Exp
literally = return . LitE . StringL
withRead :: String -> Q Exp
withRead s = return $ AppE (VarE $ mkName "read") (LitE $ StringL s)
lit :: QuasiQuoter
lit = QuasiQuoter { quoteExp = literally
, quotePat = \s -> error s $ "quotePat: " ++ s
, quoteType = \s -> error $ "quoteType: " ++ s
, quoteDec = \s -> error $ "quoteDec: " ++ s}
rlit :: QuasiQuoter
rlit = QuasiQuoter { quoteExp = withRead
, quotePat = \s -> error s $ "quotePat: " ++ s
, quoteType = \s -> error $ "quoteType: " ++ s
, quoteDec = \s -> error $ "quoteDec: " ++ s}
-- | Read file as-is.
litFile :: QuasiQuoter
litFile = quoteFile lit
ritFile :: QuasiQuoter
ritFile = quoteFile rlit