hablog-0.4.0: src/Web/Hablog/Page.hs
{-# LANGUAGE OverloadedStrings #-}
module Web.Hablog.Page where
import Control.Arrow ((&&&))
import qualified Data.Map as M
import qualified Data.Text.Lazy as T
import qualified Text.Blaze.Html5 as H
import Web.Hablog.Utils
data Page
= Page
{ getPageURL :: FilePath
, getPageName :: T.Text
, getPageContent :: H.Html
}
toPage :: T.Text -> Maybe Page
toPage fileContent =
Page <$> fmap T.unpack (M.lookup "route" header)
<*> M.lookup "title" header
<*> pure (createBody content)
where (header, content) = (getHeader &&& getContent) fileContent
instance Show Page where
show = getPageURL
instance Eq Page where
(==) p1 p2 = getPageURL p1 == getPageURL p2
instance Ord Page where
compare p1 p2
| getPageName p1 < getPageName p2 = LT
| otherwise = GT