module Rakka.Wiki ( WikiPage , BlockElement(..) , InlineElement(..) , ListElement(..) , ListType(..) , ListItem ) where import Rakka.Page type WikiPage = [BlockElement] data BlockElement = Heading { headingLevel :: !Int , headingText :: !String } | HorizontalLine | List !ListElement | LeadingSpaced ![InlineElement] | Paragraph ![InlineElement] deriving (Eq, Show) data InlineElement = Text !String | PageLink { linkPage :: !(Maybe PageName) , linkFragment :: !(Maybe String) , linkText :: !(Maybe String) } deriving (Eq, Show) data ListElement = ListElement { listType :: !ListType , listItems :: ![ListItem] } deriving (Eq, Show) data ListType = Bullet | Numbered deriving (Eq, Show) type ListItem = [Either ListElement InlineElement]