module Rakka.Wiki ( WikiPage , BlockElement(..) , InlineElement(..) , ListElement(..) , ListType(..) , ListItem , Definition(..) ) where import Rakka.Page type WikiPage = [BlockElement] data BlockElement = Heading { headingLevel :: !Int , headingText :: !String } | HorizontalLine | List !ListElement | DefinitionList ![Definition] | Preformatted ![InlineElement] | Paragraph ![InlineElement] deriving (Eq, Show) data InlineElement = Text !String | Italic ![InlineElement] | Bold ![InlineElement] | 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] data Definition = Definition { defTerm :: ![InlineElement] , defDesc :: ![InlineElement] } deriving (Eq, Show)