@@ -1,20 +1,18 @@
1{-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings, TypeFamilies, MultiParamTypeClasses #-}
1{-# LANGUAGE QuasiQuotes, TemplateHaskell, OverloadedStrings, TypeFamilies, MultiParamTypeClasses #-}
3−import Data.Text (Text)
4import Language.Elm
3import Language.Elm
5import Language.Elm.Yesod
4import Language.Elm.Yesod
6import Yesod
5import Yesod
7−import Yesod.Default.Util
8import Text.Hamlet
6import Text.Hamlet
11data ElmTest = ElmTest
8data ElmTest = ElmTest
13-- embedding an external elm file (note: no spaces!)
10-- embedding an external elm file (note: no spaces!)
14−mousePage = [elmFile|elm_source/mouse.elm|]
11+rootPage :: Show a => a -> a -> a -> String
16rootPage mouse clock shapes = [elmFile|elm_source/index.elm|]
12rootPage mouse clock shapes = [elmFile|elm_source/index.elm|]
14+mousePage = [elmFile|elm_source/mouse.elm|]
18clockPage = [elmFile|elm_source/clock.elm|]
16clockPage = [elmFile|elm_source/clock.elm|]
20-- embedding elm code inside Haskell using the QuasiQuoter:
18-- embedding elm code inside Haskell using the QuasiQuoter:
@@ -43,17 +41,17 @@ mkYesod "ElmTest" [parseRoutes|
43getMouseR :: Handler RepHtml
41getMouseR :: Handler RepHtml
44getMouseR = defaultLayout $ do
42getMouseR = defaultLayout $ do
45 setTitle "Mouse position demo"
43 setTitle "Mouse position demo"
46− generateWidget mousePage
44+ elmWidget mousePage
48getClockR :: Handler RepHtml
46getClockR :: Handler RepHtml
49getClockR = defaultLayout $ do
47getClockR = defaultLayout $ do
50 setTitle "A clock"
48 setTitle "A clock"
51− generateWidget clockPage
49+ elmWidget clockPage
53getShapesR :: Handler RepHtml
51getShapesR :: Handler RepHtml
54getShapesR = defaultLayout $ do
52getShapesR = defaultLayout $ do
55 setTitle "Simple shapes"
53 setTitle "Simple shapes"
56− generateWidget shapesPage
54+ elmWidget shapesPage
58-- URLs are rendered manually and then passed on to the function containing
56-- URLs are rendered manually and then passed on to the function containing
59-- the elm QuasiQuoter.
57-- the elm QuasiQuoter.
@@ -65,7 +63,7 @@ getRootR = do
65 clock = render ClockR
63 clock = render ClockR
66 shapes = render ShapesR
64 shapes = render ShapesR
67 setTitle "Welcome!"
65 setTitle "Welcome!"
68− generateWidget $ rootPage mouse clock shapes
66+ elmWidget $ rootPage mouse clock shapes
71-- Our Yesod instance contains the default layout, which inserts the elm-min.js
69-- Our Yesod instance contains the default layout, which inserts the elm-min.js