]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Wiki.hs
Implemented the outline command
[Rakka.git] / Rakka / Wiki.hs
index 0cf9a135fbdba2658a1da22a79f315908057e15b..0fcf38a6bca33b31550bb2ddbc8d5d49f37a19e7 100644 (file)
@@ -11,10 +11,13 @@ module Rakka.Wiki
 
     , CommandType(..)
     , Attribute
+    , BlockCommand(..)
     , InlineCommand(..)
     )
     where
 
+import           Data.Generics
+import           Network.URI
 import           Rakka.Page
 
 
@@ -31,7 +34,10 @@ data BlockElement
     | DefinitionList ![Definition]
     | Preformatted ![InlineElement]
     | Paragraph ![InlineElement]
-    deriving (Eq, Show)
+    | Div ![Attribute] ![BlockElement]
+    | EmptyBlock
+    | BlockCmd !BlockCommand
+    deriving (Eq, Show, Typeable, Data)
 
 
 data InlineElement
@@ -43,9 +49,17 @@ data InlineElement
       , linkFragment :: !(Maybe String)
       , linkText     :: !(Maybe String)
       }
+    | ExternalLink {
+        extLinkURI  :: !URI
+      , extLinkText :: !(Maybe String)
+      }
     | LineBreak ![Attribute]
+    | Span ![Attribute] ![InlineElement]
+    | Image ![Attribute]
+    | Anchor ![Attribute] ![InlineElement]
+    | EmptyInline
     | InlineCmd !InlineCommand
-    deriving (Eq, Show)
+    deriving (Eq, Show, Typeable, Data)
 
 
 data ListElement
@@ -53,13 +67,13 @@ 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]
@@ -70,21 +84,31 @@ data Definition
         defTerm :: ![InlineElement]
       , defDesc :: ![InlineElement]
       }
-    deriving (Eq, Show)
+    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)
+    deriving (Eq, Show, Typeable, Data)