X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Rakka%2FWiki.hs;h=bdecec7fac00a5da4b3aa5e86865bc6e2fc91955;hb=HEAD;hp=c1b7c7dda18adef0195087644057f54cb9f51d16;hpb=65c7f9f0643c7e8884e4a02567b77c169167c093;p=Rakka.git diff --git a/Rakka/Wiki.hs b/Rakka/Wiki.hs index c1b7c7d..bdecec7 100644 --- a/Rakka/Wiki.hs +++ b/Rakka/Wiki.hs @@ -1,3 +1,6 @@ +{-# LANGUAGE + UnicodeSyntax + #-} module Rakka.Wiki ( WikiPage @@ -17,109 +20,98 @@ module Rakka.Wiki , InlineCommand(..) ) where - -import Data.Generics -import Network.URI -import Rakka.Page - +import Data.CaseInsensitive (CI) +import Data.Text (Text) +import Network.URI +import Rakka.Page type WikiPage = [BlockElement] - data Element = Block !BlockElement | Inline !InlineElement - deriving (Eq, Show, Typeable, Data) - - -type Attribute = (String, String) + deriving (Eq, Show) +type Attribute = (CI Text, Text) data BlockElement = Heading { - headingLevel :: !Int - , headingText :: !String + headingLevel ∷ !Int + , headingText ∷ !Text } | HorizontalLine | List { - listType :: !ListType - , listItems :: ![ListItem] + listType ∷ !ListType + , listItems ∷ ![ListItem] } | DefinitionList ![Definition] - | Preformatted ![InlineElement] - | Paragraph ![InlineElement] - | Div ![Attribute] ![Element] + | Preformatted ![InlineElement] + | Paragraph ![InlineElement] + | Div ![Attribute] ![Element] | EmptyBlock - | BlockCmd !BlockCommand - deriving (Eq, Show, Typeable, Data) - + | BlockCmd !BlockCommand + deriving (Eq, Show) data InlineElement - = Text !String + = Text !Text | Italic ![InlineElement] - | Bold ![InlineElement] + | Bold ![InlineElement] | ObjectLink { - objLinkPage :: !PageName - , objLinkText :: !(Maybe String) + objLinkPage ∷ !PageName + , objLinkText ∷ !(Maybe Text) } | PageLink { - linkPage :: !(Maybe PageName) - , linkFragment :: !(Maybe String) - , linkText :: !(Maybe String) + linkPage ∷ !(Maybe PageName) + , linkFragment ∷ !(Maybe Text) + , linkText ∷ !(Maybe Text) } | ExternalLink { - extLinkURI :: !URI - , extLinkText :: !(Maybe String) + extLinkURI ∷ !URI + , extLinkText ∷ !(Maybe Text) } | LineBreak ![Attribute] - | Span ![Attribute] ![InlineElement] + | Span ![Attribute] ![InlineElement] | Image { - imgSource :: !(Either URI PageName) - , imgAlt :: !(Maybe String) + imgSource ∷ !(Either URI PageName) + , imgAlt ∷ !(Maybe Text) } - | Anchor ![Attribute] ![InlineElement] - | Input ![Attribute] + | Anchor ![Attribute] ![InlineElement] + | Input ![Attribute] | EmptyInline | InlineCmd !InlineCommand - deriving (Eq, Show, Typeable, Data) - + deriving (Eq, Show) data ListType = Bullet | Numbered - deriving (Eq, Show, Typeable, Data) - + deriving (Eq, Show) type ListItem = [Element] - data Definition = Definition { - defTerm :: ![InlineElement] - , defDesc :: ![InlineElement] + defTerm ∷ ![InlineElement] + , defDesc ∷ ![InlineElement] } - deriving (Eq, Show, Typeable, Data) - + deriving (Eq, Show) data CommandType = InlineCommandType | BlockCommandType deriving (Eq, Show) - data BlockCommand = BlockCommand { - bCmdName :: !String - , bCmdAttributes :: ![Attribute] - , bCmdContents :: ![BlockElement] + bCmdName ∷ !Text + , bCmdAttributes ∷ ![Attribute] + , bCmdContents ∷ ![BlockElement] } - deriving (Eq, Show, Typeable, Data) - + deriving (Eq, Show) data InlineCommand = InlineCommand { - iCmdName :: !String + iCmdName :: !Text , iCmdAttributes :: ![Attribute] , iCmdContents :: ![InlineElement] } - deriving (Eq, Show, Typeable, Data) + deriving (Eq, Show)