{-# LANGUAGE OverloadedStrings #-} module Generate.Html (generate, 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 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 generate :: JSSource -> String -> [JSSource] -> String -> String -> H.Html generate runtime title scripts moduleName noscript = H.docTypeHtml $ do H.head $ do H.meta ! A.charset "UTF-8" H.title . H.toHtml $ title makeScript runtime mapM_ makeScript scripts H.body $ do H.script ! A.type_ "text/javascript" $ preEscapedToMarkup ("Elm.fullscreen(Elm." ++ moduleName ++ ")") H.noscript $ preEscapedToMarkup noscript