module Rakka.Wiki
( WikiPage
+
+ , Element(..)
+ , Attribute
+
, BlockElement(..)
, InlineElement(..)
- , ListElement(..)
+ , Definition(..)
+
, ListType(..)
, ListItem
- , Definition(..)
-
, CommandType(..)
- , Attribute
, BlockCommand(..)
, InlineCommand(..)
)
where
+import Network.URI
import Rakka.Page
type WikiPage = [BlockElement]
+data Element
+ = Block !BlockElement
+ | Inline !InlineElement
+ deriving (Eq, Show)
+
+
+type Attribute = (String, String)
+
+
data BlockElement
= Heading {
headingLevel :: !Int
, headingText :: !String
}
| HorizontalLine
- | List !ListElement
+ | List {
+ listType :: !ListType
+ , listItems :: ![ListItem]
+ }
| DefinitionList ![Definition]
| Preformatted ![InlineElement]
| Paragraph ![InlineElement]
- | Div ![Attribute] ![BlockElement]
+ | Div ![Attribute] ![Element]
+ | EmptyBlock
| BlockCmd !BlockCommand
deriving (Eq, Show)
= Text !String
| Italic ![InlineElement]
| Bold ![InlineElement]
+ | ObjectLink {
+ objLinkPage :: !PageName
+ , objLinkText :: !(Maybe String)
+ }
| PageLink {
linkPage :: !(Maybe PageName)
, linkFragment :: !(Maybe String)
, linkText :: !(Maybe String)
}
+ | ExternalLink {
+ extLinkURI :: !URI
+ , extLinkText :: !(Maybe String)
+ }
| LineBreak ![Attribute]
| Span ![Attribute] ![InlineElement]
- | InlineCmd !InlineCommand
- deriving (Eq, Show)
-
-
-data ListElement
- = ListElement {
- listType :: !ListType
- , listItems :: ![ListItem]
+ | Image {
+ imgSource :: !(Either URI PageName)
+ , imgAlt :: !(Maybe String)
}
+ | Anchor ![Attribute] ![InlineElement]
+ | Input ![Attribute]
+ | EmptyInline
+ | InlineCmd !InlineCommand
deriving (Eq, Show)
deriving (Eq, Show)
-type ListItem = [Either ListElement InlineElement]
+type ListItem = [Element]
data Definition
data CommandType
= InlineCommandType
| BlockCommandType
-
-
-type Attribute = (String, String)
+ deriving (Eq, Show)
data BlockCommand