module Rakka.Wiki
( WikiPage
- , WikiElement(..)
, BlockElement(..)
, InlineElement(..)
+
+ , ListElement(..)
+ , ListType(..)
+ , ListItem
)
where
-type WikiPage = [WikiElement]
+import Rakka.Page
-data WikiElement
- = Block !BlockElement
- | Inline !InlineElement
- deriving (Eq, Show)
+type WikiPage = [BlockElement]
data BlockElement
- = Header {
- hdLevel :: !Int
- , hdText :: !String
+ = Heading {
+ headingLevel :: !Int
+ , headingText :: !String
}
- | EmptyLine
+ | 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]