X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FWiki.hs;h=0fcf38a6bca33b31550bb2ddbc8d5d49f37a19e7;hb=3c5211253dc61c31196a47486c538b64c32d8c5e;hp=0cf9a135fbdba2658a1da22a79f315908057e15b;hpb=2ad43b49ecc25bdf87dd19037fd63c12428992ae;p=Rakka.git diff --git a/Rakka/Wiki.hs b/Rakka/Wiki.hs index 0cf9a13..0fcf38a 100644 --- a/Rakka/Wiki.hs +++ b/Rakka/Wiki.hs @@ -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)