@@ -14,17 +14,30 @@
1414
1515module Language.Javascript.JSC.JMacro (
1616 evalJM
17+ , evalJME
1718) where
1819
1920import Language.Haskell.TH.Quote (QuasiQuoter(..))
2021import Language.Haskell.TH
2122 (varE, appE, Lit(..), Exp(..), mkName, ExpQ)
22−import Language.Javascript.JMacro (jmacroE, renderJs)
23+import Language.Javascript.JMacro (jmacro, jmacroE, renderJs)
2324
25+-- | Quasi quoter that creates a JavaScript string from JMacro expression
26+-- and stores it in a string litteral
27+evalJME :: QuasiQuoter
28+evalJME = jmacroE {quoteExp = quoteEvalJME}
29+
30+quoteEvalJME :: String -> ExpQ
31+quoteEvalJME s =
32+ appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSC.eval")
33+ (LitE . StringL . show $ renderJs $(quoteExp jmacroE s))|]
34+
35+-- | Quasi quoter that creates a JavaScript string from JMacro statement
36+-- and stores it in a string litteral
2437evalJM :: QuasiQuoter
25−evalJM = jmacroE {quoteExp = quoteEvalJM}
38+evalJM = jmacro {quoteExp = quoteEvalJM}
2639
2740quoteEvalJM :: String -> ExpQ
2841quoteEvalJM s =
2942 appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSC.eval")
30− (LitE . StringL . show $ renderJs $(quoteExp jmacroE s))|]
43+ (LitE . StringL . show $ renderJs $(quoteExp jmacro s))|]