, ListItem
, Definition(..)
+
+ , CommandType(..)
+ , Attribute
+ , BlockCommand(..)
+ , InlineCommand(..)
)
where
+import Data.Generics
+import Network.URI
import Rakka.Page
| DefinitionList ![Definition]
| Preformatted ![InlineElement]
| Paragraph ![InlineElement]
- deriving (Eq, Show)
+ | Div ![Attribute] ![BlockElement]
+ | EmptyBlock
+ | BlockCmd !BlockCommand
+ deriving (Eq, Show, Typeable, Data)
data InlineElement
= Text !String
| Italic ![InlineElement]
| Bold ![InlineElement]
+ | ObjectLink {
+ objLinkPage :: !PageName
+ , objLinkText :: !(Maybe String)
+ }
| PageLink {
linkPage :: !(Maybe PageName)
, linkFragment :: !(Maybe String)
, linkText :: !(Maybe String)
}
- deriving (Eq, Show)
+ | ExternalLink {
+ extLinkURI :: !URI
+ , extLinkText :: !(Maybe String)
+ }
+ | LineBreak ![Attribute]
+ | Span ![Attribute] ![InlineElement]
+ | Image {
+ imgSource :: !PageName
+ , imgAlt :: !(Maybe String)
+ }
+ | Anchor ![Attribute] ![InlineElement]
+ | EmptyInline
+ | InlineCmd !InlineCommand
+ deriving (Eq, Show, Typeable, Data)
data ListElement
listType :: !ListType
, listItems :: ![ListItem]
}
- deriving (Eq, Show)
+ deriving (Eq, Show, Typeable, Data)
data ListType
= Bullet
| Numbered
- deriving (Eq, Show)
+ deriving (Eq, Show, Typeable, Data)
type ListItem = [Either ListElement InlineElement]
defTerm :: ![InlineElement]
, defDesc :: ![InlineElement]
}
- deriving (Eq, Show)
\ No newline at end of file
+ deriving (Eq, Show, Typeable, Data)
+
+
+data CommandType
+ = InlineCommandType
+ | BlockCommandType
+ deriving (Eq, Show)
+
+
+type Attribute = (String, String)
+
+
+data BlockCommand
+ = BlockCommand {
+ bCmdName :: !String
+ , bCmdAttributes :: ![Attribute]
+ , bCmdContents :: ![BlockElement]
+ }
+ deriving (Eq, Show, Typeable, Data)
+
+
+data InlineCommand
+ = InlineCommand {
+ iCmdName :: !String
+ , iCmdAttributes :: ![Attribute]
+ , iCmdContents :: ![InlineElement]
+ }
+ deriving (Eq, Show, Typeable, Data)