module Text.BluePrintCSS.Attr where
import Text.BluePrintCSS.Base
data BoxStyle = Box | Error | Notice | Success
deriving(Show)
data Attr = Decoration BoxStyle | Append Int | Prepend Int | ShowGrid | ColBorder
deriving(Show)
type Attrs = [Attr]
toCssClass :: Attr -> String
toCssClass (Decoration Error) = "error"
toCssClass (Decoration Notice) = "notice"
toCssClass (Decoration Success) = "success"
toCssClass (Decoration Box) = "box"
toCssClass ShowGrid = "showgrid"
toCssClass (Append x) = "append-"++show(x)
toCssClass (Prepend x) = "prepend-"++show(x)
toCssClass (ColBorder) = "colborder"
margin :: Attr -> Int
margin (Decoration _) = 1
margin (ColBorder) = 1
margin (Append x) = x
margin (Prepend x) = x
margin _ = 0
instance AsCssClass Attrs where
asCssClass = map toCssClass
instance AsMargin Attrs where
smargin = sum . map margin