on master help sign in
* moved ElmUrl to elm-yesod (it's different in Happstack web-routes)
aab25b8Vincent Ambo
elm-yesod/Language/Elm/Yesod.hs+11
@@ -21,6 +21,10 @@ import Text.Blaze (preEscapedToMarkup)
21import Text.Julius
21import Text.Julius
22import Yesod.Widget (toWidgetHead, toWidgetBody, GWidget)
22import Yesod.Widget (toWidgetHead, toWidgetBody, GWidget)
23import Language.Elm
23import Language.Elm
24+import Language.Elm.Quasi
25+
26+import qualified Data.Text as TS
27+import qualified Data.Text.Lazy as TL
24
28
25-- |toWidget takes some Elm code in String format and produces a widget. Usage example:
29-- |toWidget takes some Elm code in String format and produces a widget. Usage example:
26--
30--
@@ -33,3 +37,10 @@ elmWidget source =
33 do toWidgetHead css
37 do toWidgetHead css
34 toWidgetHead [julius| #{js} |]
38 toWidgetHead [julius| #{js} |]
35 toWidgetBody html
39 toWidgetBody html
40+
41+-- | Return type of template-reading functions.
42+type ElmUrl url = (url -> [(TS.Text, TS.Text)] -> TS.Text) -> Elm
43+
44+-- | render with route interpolation
45+renderElmUrl :: (url -> [(TS.Text, TS.Text)] -> TS.Text) -> ElmUrl url -> TL.Text
46+renderElmUrl r s = renderElm $ s r
elm-yesod/elm-yesod.cabal+2−1
@@ -32,4 +32,5 @@ Library
32 yesod-core >= 1,
32 yesod-core >= 1,
33 hamlet,
33 hamlet,
34 shakespeare-css,
34 shakespeare-css,
35− shakespeare-js
35+ shakespeare-js,
36+ text
elm/src/Language/Elm/Quasi.hs−15
@@ -21,7 +21,6 @@ module Language.Elm.Quasi
21 , elmFileReload
21 , elmFileReload
22
22
23 -- * Datatypes
23 -- * Datatypes
24− , ElmUrl
25 , Elm (..)
24 , Elm (..)
26
25
27 -- * Typeclass for interpolated variables
26 -- * Typeclass for interpolated variables
@@ -29,7 +28,6 @@ module Language.Elm.Quasi
29
28
30 -- ** Rendering Functions
29 -- ** Rendering Functions
31 , renderElm
30 , renderElm
32− , renderElmUrl
33
31
34 ) where
32 ) where
35
33
@@ -45,23 +43,10 @@ import Text.Shakespeare
45renderElm :: Elm -> TL.Text
43renderElm :: Elm -> TL.Text
46renderElm (Elm b) = toLazyText b
44renderElm (Elm b) = toLazyText b
47
45
48−-- | render with route interpolation. If using this module standalone, apart
49−-- from type-safe routes, a dummy renderer can be used:
50−--
51−-- > renderElmUrl (\_ _ -> undefined) elmUrl
52−--
53−-- When using Yesod, a renderer is generated for you, which can be accessed
54−-- within the GHandler monad: 'Yesod.Handler.getUrlRenderParams'.
55−renderElmUrl :: (url -> [(TS.Text, TS.Text)] -> TS.Text) -> ElmUrl url -> TL.Text
56−renderElmUrl r s = renderElm $ s r
57−
58-- | Newtype wrapper of 'Builder'.
46-- | Newtype wrapper of 'Builder'.
59newtype Elm = Elm { unElm :: Builder }
47newtype Elm = Elm { unElm :: Builder }
60 deriving Monoid
48 deriving Monoid
61
49
62−-- | Return type of template-reading functions.
63−type ElmUrl url = (url -> [(TS.Text, TS.Text)] -> TS.Text) -> Elm
64−
65-- | A typeclass for types that can be interpolated in CoffeeScript templates.
50-- | A typeclass for types that can be interpolated in CoffeeScript templates.
66class ToElm a where
51class ToElm a where
67 toElm :: a -> Builder
52 toElm :: a -> Builder