]> gitweb @ CieloNegro.org - Rakka.git/blob - Rakka/Wiki.hs
implemented listing
[Rakka.git] / Rakka / Wiki.hs
1 module Rakka.Wiki
2     ( WikiPage
3     , BlockElement(..)
4     , InlineElement(..)
5
6     , ListElement(..)
7     , ListType(..)
8     , ListItem
9     )
10     where
11
12 import           Rakka.Page
13
14
15 type WikiPage = [BlockElement]
16
17
18 data BlockElement
19     = Heading {
20         headingLevel :: !Int
21       , headingText  :: !String
22       }
23     | HorizontalLine
24     | List !ListElement
25     | LeadingSpaced ![InlineElement]
26     | Paragraph ![InlineElement]
27     deriving (Eq, Show)
28
29
30 data InlineElement
31     = Text !String
32     | PageLink {
33         linkPage     :: !(Maybe PageName)
34       , linkFragment :: !(Maybe String)
35       , linkText     :: !(Maybe String)
36       }
37     deriving (Eq, Show)
38
39
40 data ListElement
41     = ListElement {
42         listType  :: !ListType
43       , listItems :: ![ListItem]
44       }
45     deriving (Eq, Show)
46
47
48 data ListType
49     = Bullet
50     | Numbered
51     deriving (Eq, Show)
52
53
54 type ListItem = [Either ListElement InlineElement]