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