@@ -50,9 +50,9 @@ build flags rootFile =
5050 (extension, code) <-
5151 if Flag.only_js flags
5252 then do putStr "Generating JavaScript ... "
53− return ("js", js)
53+ makeJs js
5454 else do putStr "Generating HTML ... "
55− return (makeHtml js moduleName)
55+ makeHtml js moduleName
5656
5757 let targetFile = Utils.buildPath flags rootFile extension
5858 createDirectoryIfMissing True (takeDirectory targetFile)
@@ -65,9 +65,25 @@ build flags rootFile =
6565 src <- BS.readFile filePath
6666 return (BS.append src js)
6767
68− sources js = map Html.Link (Flag.scripts flags) ++ [ Html.Source js ]
68+ getRuntime :: IO Html.JSSource
69+ getRuntime =
70+ let runtimePath = Maybe.fromMaybe Path.runtime (Flag.set_runtime flags) in
71+ case Flag.bundle_runtime flags of
72+ False -> return (Html.Link runtimePath)
73+ True -> Html.Source `fmap` BS.readFile runtimePath
6974
70− makeHtml js moduleName = ("html", BS.pack $ renderHtml html)
71− where
72− rtsPath = Maybe.fromMaybe Path.runtime (Flag.set_runtime flags)
73− html = Html.generate rtsPath (takeBaseName rootFile) (sources js) moduleName ""
75+ makeJs :: BS.ByteString -> IO (String, BS.ByteString)
76+ makeJs js =
77+ do runtime <- getRuntime
78+ case runtime of
79+ Html.Link _ -> return ("js", js)
80+ Html.Source rts -> return ("js", BS.append rts js)
81+
82+ makeHtml :: BS.ByteString -> String -> IO (String, BS.ByteString)
83+ makeHtml js moduleName =
84+ do runtime <- getRuntime
85+ return ("html", BS.pack $ renderHtml (html runtime))
86+ where
87+ sources js = map Html.Link (Flag.scripts flags) ++ [ Html.Source js ]
88+ html runtime =
89+ Html.generate runtime (takeBaseName rootFile) (sources js) moduleName ""