module Dingo.Internal.Html
( mkHeadMerge
) where
import Data.ByteString (ByteString)
import Data.Maybe (mapMaybe)
import Data.Monoid (Monoid(..))
import Data.Text (Text, isSuffixOf)
import qualified Data.Text as T
import Dingo.Internal.ResourceBundle.Internal (ResourceBundle, getResourceBundleContents)
import Text.Blaze ((!), toValue)
import qualified Text.Blaze.Html4.Strict as H4
import qualified Text.Blaze.Html4.Strict.Attributes as A
-- Build head merge HTML content from a resource bundle.
mkHeadMerge :: ResourceBundle -> [H4.Html]
mkHeadMerge resourceBundle =
mapMaybe headMerge directory
where
(guid, directory) = getResourceBundleContents resourceBundle
path filePath = T.concat [ bundleRootUri, filePath ]
bundleRootUri =
T.concat ["/bundles/", guid, "/" ]
headMerge :: (Text,ByteString) -> Maybe H4.Html
headMerge (filePath, _) | ".css" `isSuffixOf` filePath =
Just $ H4.link ! A.type_ "text/css" ! A.href (toValue $ path filePath) ! A.rel "stylesheet"
headMerge (filePath, _) | ".js" `isSuffixOf` filePath =
Just $ H4.script ! A.type_ "text/javascript" ! A.src (toValue $ path filePath) $ mempty
headMerge (_,_) =
mempty