on master help sign in
Merge pull request #13 from tazjin/master

* fixed elm-yesod and re-exported the elm QQers

commit8185420450230d9f1db016dce571904dd71044ff authorEvan Czaplicki <info@elm-lang.org> dateTue 29 May 2012, 13:29 (14 years ago) parent12384b8381fbf4
4 files changed+28−22
Examples/elm-yesod/Main.hs+7−9 elm-yesod/Language/Elm/Yesod.hs+7−8 elm/Elm.cabal+9−4 elm/src/Language/Elm.hs+5−1
Examples/elm-yesod/Main.hs+7−9
@@ -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
elm-yesod/Language/Elm/Yesod.hs+7−8
@@ -15,21 +15,20 @@
1515
1616 A full example implementation is provided in the examples folder of the Elm github repository.
1717-}
18−module Language.Elm.Yesod (toWidget) where
18+module Language.Elm.Yesod (elmWidget) where
1919
2020import Text.Blaze (preEscapedToMarkup)
21−import Text.Hamlet
2221import Text.Julius
23−import Yesod.Widget (toWidgetHead, whamlet, GWidget)
22+import Yesod.Widget (toWidgetHead, toWidgetBody, GWidget)
2423import Language.Elm
2524
2625-- |toWidget takes some Elm code in String format and produces a widget. Usage example:
2726--
2827-- > toWidget [elmFile|elm-source/somePage.elm|]
29−toWidget :: String -- ^ The Elm source code
30− -> GWidget sub master ()
31−toWidget source =
28+elmWidget :: String -- ^ The Elm source code
29+ -> GWidget sub master ()
30+elmWidget source =
3231 let (html, css, js) = toParts source in
33− do toWidgetHead [hamlet| #{css} |]
32+ do toWidgetHead css
3433 toWidgetHead [julius| #{js} |]
35− [whamlet| ^{html} |]
34+ toWidgetBody html
elm/Elm.cabal+9−4
@@ -29,8 +29,9 @@ source-repository head
2929 location: git://github.com/evancz/Elm.git
3030
3131Library
32− exposed-modules: Language.Elm
33− ghc-options: -O2
32+ exposed-modules: Language.Elm,
33+ Language.Elm.Quasi
34+ ghc-options: -O2 -Wall
3435 Hs-Source-Dirs: src, src/Parse, src/Types
3536 other-modules: Ast,
3637 CompileToJS,
@@ -60,11 +61,15 @@ Library
6061 parsec >= 3.1.1,
6162 blaze-html == 0.5.0.*,
6263 blaze-markup == 0.5.1.*,
63− deepseq
64+ deepseq,
65+ text,
66+ attoparsec >= 0.10,
67+ template-haskell,
68+ haskell-src-meta
6469
6570Executable elm
6671 Main-is: Compiler.hs
67− ghc-options: -O2
72+ ghc-options: -O2 -Wall
6873 Hs-Source-Dirs: src, src/Parse, src/Types
6974 other-modules: Ast,
7075 CompileToJS,
elm/src/Language/Elm.hs+5−1
@@ -8,13 +8,17 @@
88-}
99module Language.Elm (
1010 toHtml,
11− toParts) where
11+ toParts,
12+ elm,
13+ elmFile) where
1214
1315import CompileToJS
1416import ExtractNoscript
1517import GenerateHtml
1618import Initialize
1719import Text.Blaze.Html (Html)
20+import Language.Elm.Quasi
21+
1822
1923-- |This function compiles Elm code into a full HTML page.
2024--