on master help sign in
* updated elm-happstack example
4dd5937Vincent Ambo
Examples/elm-happstack/Main.hs+11−11
@@ -1,18 +1,18 @@
1−{-# LANGUAGE QuasiQuotes #-}
1+{-# LANGUAGE QuasiQuotes, TemplateHaskell #-}
2
2
3import Control.Monad (msum)
3import Control.Monad (msum)
4import Happstack.Server
4import Happstack.Server
5−import Language.Elm (elmFile, elm)
5+import Language.Elm
6−
7−import qualified Language.Elm as Elm
6+import Language.Elm.Quasi
8
7
9elmLoc :: String
8elmLoc :: String
10elmLoc = "http://f.cl.ly/items/2e3Z3r3v29263U393c3x/elm-min.js"
9elmLoc = "http://f.cl.ly/items/2e3Z3r3v29263U393c3x/elm-min.js"
11
10
11+elmResponse :: ElmSource a
12−elmResponse :: String -- ^ Page title
12+ => String -- ^ Page title
13− -> String -- ^ elm source
13+ -> a -- ^ elm source
14 -> Response
14 -> Response
15−elmResponse title = toResponse . Elm.toHtml elmLoc title
15+elmResponse title = toResponse . toHtml elmLoc title
16
16
17-- embedding variables (in this case URLs)
17-- embedding variables (in this case URLs)
18rootHandler :: ServerPart Response
18rootHandler :: ServerPart Response
@@ -21,16 +21,16 @@ rootHandler = ok $ elmResponse "Welcome!" $ elmIndex
21 mouse = "/mouse"
21 mouse = "/mouse"
22 clock = "/clock"
22 clock = "/clock"
23 shapes = "/shapes"
23 shapes = "/shapes"
24− elmIndex = [elmFile|elm_source/index.elm|]
24+ elmIndex = $(elmFile "elm_source/index.elm")
25
25
26-- loading elm source from file
26-- loading elm source from file
27
27
28mouseHandler :: ServerPart Response
28mouseHandler :: ServerPart Response
29−mouseHandler = ok $ elmResponse "Mouse position demo" $
29+mouseHandler = ok $ elmResponse "Mouse position demo"
30− [elmFile|elm_source/mouse.elm|]
30+ $(elmFile "elm_source/mouse.elm")
31
31
32clockHandler :: ServerPart Response
32clockHandler :: ServerPart Response
33−clockHandler = ok $ elmResponse "A clock" $ [elmFile|elm_source/clock.elm|]
33+clockHandler = ok $ elmResponse "A clock" $(elmFile "elm_source/clock.elm")
34
34
35-- embedding elm code inside Haskell using the QuasiQuoter:
35-- embedding elm code inside Haskell using the QuasiQuoter:
36shapesPage = [elm|
36shapesPage = [elm|
Examples/elm-happstack/elm_source/index.elm+3−3
@@ -25,9 +25,9 @@ info w = List.map (\f -> f ()) . List.intersperse (\x -> plainText " ") . L
25 toText ". Since you are looking at this page it is safe to assume that you already have the example code. "
25 toText ". Since you are looking at this page it is safe to assume that you already have the example code. "
26 , text $ toText "A second Happstack example using web-routes will be added later on."
26 , text $ toText "A second Happstack example using web-routes will be added later on."
27 , section "More examples:"
27 , section "More examples:"
28− , text $ toText "- " ++ link ^{mouse} (toText "A simple mouse input example")
28+ , text $ toText "- " ++ link "#{mouse}" (toText "A simple mouse input example")
29− , text $ toText "- " ++ link ^{clock} (toText "An animated analog clock")
29+ , text $ toText "- " ++ link "#{clock}" (toText "An animated analog clock")
30− , text $ toText "- " ++ link ^{shapes} (toText "Some simple rendered shapes")
30+ , text $ toText "- " ++ link "#{shapes}" (toText "Some simple rendered shapes")
31 ]
31 ]
32
32
33body outer inner = width outer . box 2 . flow down . (:) (plainText " ") $ info inner
33body outer inner = width outer . box 2 . flow down . (:) (plainText " ") $ info inner