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