elm/compiler/Generate/Html.hs
2013-09-28 15:39:52 -04:00

38 lines
1.2 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
module Generate.Html
(createHtml,
JSSource (..)
) where
import Text.Blaze (preEscapedToMarkup)
import qualified Text.Blaze.Html5 as H
import Text.Blaze.Html5 ((!))
import qualified Text.Blaze.Html5.Attributes as A
import qualified Data.ByteString.Lazy.Char8 as BS
import Initialize (buildFromSource)
import Generate.JavaScript
import Generate.Noscript
data JSSource = Link String | Source BS.ByteString
makeScript :: JSSource -> H.Html
makeScript source =
case source of
Link src -> H.script ! A.type_ "text/javascript" ! A.src (H.toValue src) $ ""
Source src ->
H.script ! A.type_ "text/javascript" $
preEscapedToMarkup $ BS.unpack src
createHtml :: FilePath -> String -> [JSSource] -> String -> String -> H.Html
createHtml libLoc title scripts moduleName noscript =
H.docTypeHtml $ do
H.head $ do
H.meta ! A.charset "UTF-8"
H.title . H.toHtml $ title
makeScript (Link libLoc)
mapM_ makeScript scripts
H.body $ do
H.script ! A.type_ "text/javascript" $
preEscapedToMarkup ("Elm.fullscreen(Elm." ++ moduleName ++ ")")
H.noscript $ preEscapedToMarkup noscript