@@ -1,43 +0,0 @@
1−{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
2−-----------------------------------------------------------------------------
3−--
4−-- Module : Language.Javascript.JSaddle.JMacro
5−-- Copyright : (c) Hamish Mackenzie
6−-- License : MIT
7−--
8−-- Maintainer : Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
9−--
10−-- | Helper function to make it easy to embed JMacro in your code and
11−-- use it from JSaddle
12−--
13−-----------------------------------------------------------------------------
14−
15−module Language.Javascript.JSaddle.JMacro (
16− evalJM
17− , evalJME
18−) where
19−
20−import Language.Haskell.TH.Quote (QuasiQuoter(..))
21−import Language.Haskell.TH
22− (varE, appE, Lit(..), Exp(..), mkName, ExpQ)
23−import Language.Javascript.JMacro (jmacro, jmacroE, renderJs)
24−
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.JSaddle.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
37−evalJM :: QuasiQuoter
38−evalJM = jmacro {quoteExp = quoteEvalJM}
39−
40−quoteEvalJM :: String -> ExpQ
41−quoteEvalJM s =
42− appE (varE 'return) [|AppE (VarE $ mkName "Language.Javascript.JSaddle.eval")
43− (LitE . StringL . show $ renderJs $(quoteExp jmacro s))|]