@@ -25,6 +25,18 @@ css = H.style ! A.type_ "text/css" $ preEscapedToMarkup
25makeScript :: String -> H.Html
25makeScript :: String -> H.Html
26makeScript s = H.script ! A.type_ "text/javascript" ! A.src (H.toValue s) $ ""
26makeScript s = H.script ! A.type_ "text/javascript" ! A.src (H.toValue s) $ ""
28+scriptForModule :: String -> H.Html
29+scriptForModule modul =
30+ makeScript $ "/" ++ map (\c -> if c == '.' then '/' else c) modul ++ ".js"
33+ concat [ map ("Data."++) [ "List", "Char", "Maybe" ]
34+ , map ("Signal."++) [ "Mouse", "Keyboard.Raw"
35+ , "Window", "Time", "HTTP", "Input", "Random" ]
36+ , [ "Element", "Text", "Color", "Line" ]
28-- |This function compiles Elm code into simple HTML.
40-- |This function compiles Elm code into simple HTML.
30-- Usage example:
42-- Usage example:
@@ -36,6 +48,8 @@ generateHtml :: String -- ^ Location of elm-min.js as expected by the browser
37generateHtml libLoc title source =
49generateHtml libLoc title source =
38 let modul = initialize source
50 let modul = initialize source
51+ imports = filter (`notElem` builtInModules) $
52+ either (const []) (\(Module _ _ is _) -> map fst is) modul
39 js = compileToJS modul
53 js = compileToJS modul
40 noscript = either id extract modul
54 noscript = either id extract modul
@@ -44,6 +58,7 @@ generateHtml libLoc title source =
44 H.meta ! A.charset "UTF-8"
58 H.meta ! A.charset "UTF-8"
45 H.title . H.toHtml $ title
59 H.title . H.toHtml $ title
46 makeScript libLoc
60 makeScript libLoc
61+ mapM scriptForModule imports
47 H.script ! A.type_ "text/javascript" $ preEscapedToMarkup js
62 H.script ! A.type_ "text/javascript" $ preEscapedToMarkup js
49 H.body $ body noscript
64 H.body $ body noscript