X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FWiki.hs;h=613869b2a9091b83f1b234aa2c20b85ca08caab3;hb=ddf0b4d7ab2f1e141edbc7ef75d39853c0846f8c;hp=0cf9a135fbdba2658a1da22a79f315908057e15b;hpb=2ad43b49ecc25bdf87dd19037fd63c12428992ae;p=Rakka.git diff --git a/Rakka/Wiki.hs b/Rakka/Wiki.hs index 0cf9a13..613869b 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,21 +34,39 @@ data BlockElement | 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) } + | 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) + deriving (Eq, Show, Typeable, Data) data ListElement @@ -53,13 +74,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 +91,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)