]> gitweb @ CieloNegro.org - Rakka.git/blob - Rakka/Wiki.hs
b8be3a3fabf8bc5d3a56ef77cdd9207da6c81baf
[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     | Preformatted ![InlineElement]
29     | Paragraph ![InlineElement]
30     deriving (Eq, Show)
31
32
33 data InlineElement
34     = Text !String
35     | Italic ![InlineElement]
36     | Bold ![InlineElement]
37     | PageLink {
38         linkPage     :: !(Maybe PageName)
39       , linkFragment :: !(Maybe String)
40       , linkText     :: !(Maybe String)
41       }
42     deriving (Eq, Show)
43
44
45 data ListElement
46     = ListElement {
47         listType  :: !ListType
48       , listItems :: ![ListItem]
49       }
50     deriving (Eq, Show)
51
52
53 data ListType
54     = Bullet
55     | Numbered
56     deriving (Eq, Show)
57
58
59 type ListItem = [Either ListElement InlineElement]
60
61
62 data Definition
63     = Definition {
64         defTerm :: ![InlineElement]
65       , defDesc :: ![InlineElement]
66       }
67     deriving (Eq, Show)