module Web.Page.Types where
import Data.Default
import Data.Monoid
data WebPage markup attr attrSet = WebPage
{ pageTitle :: attr
, favicon :: markup
, metaVars :: markup
, initScripts :: markup
, beforeStylesScripts :: markup
, styles :: markup
, afterStylesScripts :: markup
, bodyScripts :: markup
, bodyStyles :: attrSet
} deriving (Show, Eq, Ord)
instance ( Monoid m
, Monoid a
, Monoid s
) => Monoid (WebPage m a s) where
mempty = WebPage mempty mempty mempty mempty mempty mempty mempty mempty mempty
mappend (WebPage t1 f1 m1 is1 bs1 s1 as1 b1 bss1) (WebPage t2 f2 m2 is2 bs2 s2 as2 b2 bss2) =
WebPage (t1 `mappend` t2)
(f1 `mappend` f2)
(m1 `mappend` m2)
(is1 `mappend` is2)
(bs1 `mappend` bs2)
(s1 `mappend` s2)
(as1 `mappend` as2)
(b1 `mappend` b2)
(bss1 `mappend` bss2)
instance ( Monoid m
, Monoid a
, Monoid s
) => Default (WebPage m a s) where
def = mempty