X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FWiki.hs;h=a519d34a227da9b8a40ec6db7b66108907185fc2;hb=d86c5b3ded23eaa215d1903495579c19c7daf5bb;hp=613869b2a9091b83f1b234aa2c20b85ca08caab3;hpb=ddf0b4d7ab2f1e141edbc7ef75d39853c0846f8c;p=Rakka.git diff --git a/Rakka/Wiki.hs b/Rakka/Wiki.hs index 613869b..a519d34 100644 --- a/Rakka/Wiki.hs +++ b/Rakka/Wiki.hs @@ -1,22 +1,23 @@ module Rakka.Wiki ( WikiPage + + , Element(..) + , Attribute + , BlockElement(..) , InlineElement(..) - , ListElement(..) + , Definition(..) + , ListType(..) , ListItem - , Definition(..) - , CommandType(..) - , Attribute , BlockCommand(..) , InlineCommand(..) ) where -import Data.Generics import Network.URI import Rakka.Page @@ -24,20 +25,32 @@ 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, Typeable, Data) + deriving (Eq, Show) data InlineElement @@ -60,30 +73,23 @@ data InlineElement | LineBreak ![Attribute] | Span ![Attribute] ![InlineElement] | Image { - imgSource :: !PageName + imgSource :: !(Either URI PageName) , imgAlt :: !(Maybe String) } | Anchor ![Attribute] ![InlineElement] + | Input ![Attribute] | EmptyInline | InlineCmd !InlineCommand - deriving (Eq, Show, Typeable, Data) - - -data ListElement - = ListElement { - listType :: !ListType - , listItems :: ![ListItem] - } - deriving (Eq, Show, Typeable, Data) + deriving (Eq, Show) data ListType = Bullet | Numbered - deriving (Eq, Show, Typeable, Data) + deriving (Eq, Show) -type ListItem = [Either ListElement InlineElement] +type ListItem = [Element] data Definition @@ -91,7 +97,7 @@ data Definition defTerm :: ![InlineElement] , defDesc :: ![InlineElement] } - deriving (Eq, Show, Typeable, Data) + deriving (Eq, Show) data CommandType @@ -100,16 +106,13 @@ data CommandType deriving (Eq, Show) -type Attribute = (String, String) - - data BlockCommand = BlockCommand { bCmdName :: !String , bCmdAttributes :: ![Attribute] , bCmdContents :: ![BlockElement] } - deriving (Eq, Show, Typeable, Data) + deriving (Eq, Show) data InlineCommand @@ -118,4 +121,4 @@ data InlineCommand , iCmdAttributes :: ![Attribute] , iCmdContents :: ![InlineElement] } - deriving (Eq, Show, Typeable, Data) + deriving (Eq, Show)