@@ -1,20 +1,18 @@
11{-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings, TypeFamilies, MultiParamTypeClasses #-}
22
3−import Data.Text (Text)
43import Language.Elm
54import Language.Elm.Yesod
65import Yesod
7−import Yesod.Default.Util
86import Text.Hamlet
9−import Text.Julius
107
118data ElmTest = ElmTest
129
1310-- embedding an external elm file (note: no spaces!)
14−mousePage = [elmFile|elm_source/mouse.elm|]
15−
11+rootPage :: Show a => a -> a -> a -> String
1612rootPage mouse clock shapes = [elmFile|elm_source/index.elm|]
1713
14+mousePage = [elmFile|elm_source/mouse.elm|]
15+
1816clockPage = [elmFile|elm_source/clock.elm|]
1917
2018-- embedding elm code inside Haskell using the QuasiQuoter:
@@ -43,17 +41,17 @@ mkYesod "ElmTest" [parseRoutes|
4341getMouseR :: Handler RepHtml
4442getMouseR = defaultLayout $ do
4543 setTitle "Mouse position demo"
46− generateWidget mousePage
44+ elmWidget mousePage
4745
4846getClockR :: Handler RepHtml
4947getClockR = defaultLayout $ do
5048 setTitle "A clock"
51− generateWidget clockPage
49+ elmWidget clockPage
5250
5351getShapesR :: Handler RepHtml
5452getShapesR = defaultLayout $ do
5553 setTitle "Simple shapes"
56− generateWidget shapesPage
54+ elmWidget shapesPage
5755
5856-- URLs are rendered manually and then passed on to the function containing
5957-- the elm QuasiQuoter.
@@ -65,7 +63,7 @@ getRootR = do
6563 clock = render ClockR
6664 shapes = render ShapesR
6765 setTitle "Welcome!"
68− generateWidget $ rootPage mouse clock shapes
66+ elmWidget $ rootPage mouse clock shapes
6967
7068
7169-- Our Yesod instance contains the default layout, which inserts the elm-min.js