module Bamboo.Model.Static where
import Bamboo.Env hiding (match)
import Bamboo.Model.Helper
import Bamboo.Type.Reader
import qualified Data.ByteString.Char8 as S
data Static = Static
{ uid :: String
, body :: S.ByteString
, reader :: Reader
}
deriving (Show, Eq)
instance Resource Static where
resource_title x = (static_config.static_id / x.uid.get_title) .spaced_url
instance Markable Static where
markup = (reader &&& body) > splash render_to_html
instance Default Static where
def = Static def S.empty def
instance FlatRead Static where
flat_read x = do
t <- get_body x
def {body = t, uid = x} .return
instance Gettable Static where
get id = flat_read id
get_title :: SC
get_title = id_to_resource > drop_known_extension > split "/" > last
title :: Static -> String
title = uid > get_title