@@ -13,15 +13,29 @@ data ElmTest = ElmTest
1313-- embedding an external elm file (note: no spaces!)
1414mousePage = [elmFile|elm_source/mouse.elm|]
1515
16−-- embedding elm code in our Haskell file
17−rootPage = [elm|
18−main = plainText "Welcome!"
16+rootPage = [elmFile|elm_source/index.elm|]
17+
18+clockPage = [elmFile|elm_source/clock.elm|]
19+
20+-- embedding elm code inside Haskell using the QuasiQuoter:
21+shapesPage = [elm|
22+square = rect 200 200 (150,150)
23+circle = oval 140 140 (150,150)
24+pentagon = ngon 5 60 (150,150)
25+
26+main = collage 300 300
27+ [ outlined black square
28+ , filled green pentagon
29+ , customOutline [8,4] blue circle
30+ ]
1931|]
2032
2133-- our Yesod App
2234mkYesod "ElmTest" [parseRoutes|
2335/ RootR GET
2436/mouse MouseR GET
37+/clock ClockR GET
38+/shapes ShapesR GET
2539|]
2640
2741-- generateWidget is called with the result of an Elm QuasiQuoter (which is just a
@@ -31,11 +45,24 @@ getMouseR = defaultLayout $ do
3145 setTitle "Mouse position demo"
3246 generateWidget mousePage
3347
48+getClockR :: Handler RepHtml
49+getClockR = defaultLayout $ do
50+ setTitle "A clock"
51+ generateWidget clockPage
52+
53+getShapesR :: Handler RepHtml
54+getShapesR = defaultLayout $ do
55+ setTitle "Simple shapes"
56+ generateWidget shapesPage
57+
3458getRootR :: Handler RepHtml
3559getRootR = defaultLayout $ do
3660 setTitle "Welcome!"
3761 generateWidget rootPage
3862
63+
64+-- Our Yesod instance contains the default layout, which inserts the elm-min.js
65+-- file in the site's <head> tag.
3966instance Yesod ElmTest where
4067 jsLoader _ = BottomOfHeadBlocking
4168 defaultLayout widget = do