module Text.HTML.Moe.Type where
import Data.Default
import Control.Monad.Writer
import Data.ByteString
data Element =
Element
{
name :: ByteString
, attributes :: [Attribute]
, elements :: [Element]
, indent :: Bool
}
| Raw ByteString -- no escape, no indent
| Pre ByteString -- escape, no indent
| Data ByteString -- escape, indent
| Prim ByteString -- no escape, indent
deriving (Show)
instance Default Element where
def = Element empty def def True
data Attribute = Attribute
{
key :: ByteString
, value :: ByteString
}
deriving (Show)
instance Default Attribute where
def = Attribute empty empty
type MoeUnitT a = Writer [Element] a
type MoeUnit = MoeUnitT ()
type MoeCombinator = [Attribute] -> MoeUnit -> MoeUnit
type MoeCombinator' = MoeUnit -> MoeUnit