]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Wiki.hs
Resurrection from bitrot
[Rakka.git] / Rakka / Wiki.hs
index a519d34a227da9b8a40ec6db7b66108907185fc2..bdecec7fac00a5da4b3aa5e86865bc6e2fc91955 100644 (file)
@@ -1,3 +1,6 @@
+{-# LANGUAGE
+    UnicodeSyntax
+  #-}
 module Rakka.Wiki
     ( WikiPage
 
@@ -17,107 +20,97 @@ module Rakka.Wiki
     , InlineCommand(..)
     )
     where
-
-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)
 
-
-type Attribute = (String, String)
-
+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
+    | 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)
 
-
 data ListType
     = Bullet
     | Numbered
     deriving (Eq, Show)
 
-
 type ListItem = [Element]
 
-
 data Definition
     = Definition {
-        defTerm :: ![InlineElement]
-      , defDesc :: ![InlineElement]
+        defTerm  ![InlineElement]
+      , defDesc  ![InlineElement]
       }
     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)
 
-
 data InlineCommand
     = InlineCommand {
-        iCmdName       :: !String
+        iCmdName       :: !Text
       , iCmdAttributes :: ![Attribute]
       , iCmdContents   :: ![InlineElement]
       }