+ | Italic ![InlineElement]
+ | Bold ![InlineElement]
+ | PageLink {
+ linkPage :: !(Maybe PageName)
+ , linkFragment :: !(Maybe String)
+ , linkText :: !(Maybe String)
+ }
+ | LineBreak ![Attribute]
+ | Span ![Attribute] ![InlineElement]
+ | Image ![Attribute]
+ | Anchor ![Attribute] ![InlineElement]
+ | InlineCmd !InlineCommand
+ deriving (Eq, Show, Typeable, Data)
+
+
+data ListElement
+ = ListElement {
+ listType :: !ListType
+ , listItems :: ![ListItem]
+ }
+ deriving (Eq, Show, Typeable, Data)
+
+
+data ListType
+ = Bullet
+ | Numbered
+ deriving (Eq, Show, Typeable, Data)
+
+
+type ListItem = [Either ListElement InlineElement]
+
+
+data Definition
+ = Definition {
+ defTerm :: ![InlineElement]
+ , defDesc :: ![InlineElement]
+ }
+ deriving (Eq, Show, Typeable, Data)
+
+
+data CommandType
+ = InlineCommandType
+ | BlockCommandType