on master help sign in
* added the elmFile QuasiQuoter for embedding .elm files

the elm-yesod example contains an example for how to use the elmFile QQ. Note: No spaces before and after the filename!

commitbdb3a63d13e291dcb3e7c504276d2628c49173e4 authorVincent Ambo <v.ambo@me.com> dateMon 28 May 2012, 17:24 (14 years ago) parentc6bd8bf
3 files changed+19−15
Examples/elm-yesod/Main.hs+5−14 Examples/elm-yesod/elm_source/mouse.elm+9 elm/src/Language/Elm.hs+5−1
Examples/elm-yesod/Main.hs+5−14
@@ -10,36 +10,27 @@ import Text.Julius
1010
1111data ElmTest = ElmTest
1212
13−-- our Elm code
14−mousePage = [elm|
15−niceBlue = rgb 0 (1/3) (2/3)
16−clearGreen = rgba (1/9) (8/9) (3/9) (1/2)
17−
18−scene (x,y) (w,h) =
19− collage w h [ filled niceBlue . rotate ((x+y)/1000) $ ngon 4 100 (200,200)
20− , filled clearGreen $ ngon 5 30 (x,y)
21− ]
22−
23−main = lift2 scene Mouse.position Window.dimensions
24−|]
13+-- embedding an external elm file (note: no spaces!)
14+mousePage = [elmFile|elm_source/mouse.elm|]
2515
16+-- embedding elm code in our Haskell file
2617rootPage = [elm|
2718main = plainText "Welcome!"
2819|]
2920
3021-- our Yesod App
31−
3222mkYesod "ElmTest" [parseRoutes|
3323/ RootR GET
3424/mouse MouseR GET
3525|]
3626
27+-- generateWidget is called with the result of an Elm QuasiQuoter (which is just a
28+-- string containing some Elm code, with proper newline escaping)
3729getMouseR :: Handler RepHtml
3830getMouseR = defaultLayout $ do
3931 setTitle "Mouse position demo"
4032 generateWidget mousePage
4133
42−
4334getRootR :: Handler RepHtml
4435getRootR = defaultLayout $ do
4536 setTitle "Welcome!"
Examples/elm-yesod/elm_source/mouse.elmnew file+9
@@ -0,0 +1,9 @@
1+niceBlue = rgb 0 (1/3) (2/3)
2+clearGreen = rgba (1/9) (8/9) (3/9) (1/2)
3+
4+scene (x,y) (w,h) =
5+ collage w h [ filled niceBlue . rotate ((x+y)/1000) $ ngon 4 100 (200,200)
6+ , filled clearGreen $ ngon 5 30 (x,y)
7+ ]
8+
9+main = lift2 scene Mouse.position Window.dimensions
elm/src/Language/Elm.hs+5−1
@@ -5,7 +5,8 @@ module Language.Elm (
55 module Language.Elm.CompileToJS,
66 module Language.Elm.ExtractNoscript,
77 generateHtml,
8− elm) where
8+ elm,
9+ elmFile) where
910
1011import Language.Elm.CompileToJS
1112import Language.Elm.ExtractNoscript
@@ -16,3 +17,6 @@ import Language.Haskell.TH.Quote
1617
1718elm :: QuasiQuoter
1819elm = QuasiQuoter {quoteExp = \s -> [|s|] }
20+
21+elmFile :: QuasiQuoter
22+elmFile = quoteFile elm