]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Wiki/Parser.hs
Exodus to GHC 6.8.1
[Rakka.git] / Rakka / Wiki / Parser.hs
index 6e4edeb4bc5c604aab1f6e97c0080471c1ebeff4..912237c7eda8db5b2f7de3ca79e7ad5d257be6fd 100644 (file)
@@ -5,9 +5,9 @@ module Rakka.Wiki.Parser
     where
 
 import           Data.Maybe
-import           Network.URI
+import           Network.URI hiding (fragment)
 import           Rakka.Wiki
-import           Text.ParserCombinators.Parsec
+import           Text.ParserCombinators.Parsec hiding (label)
 
 
 type CommandTypeOf = String -> Maybe CommandType
@@ -34,7 +34,7 @@ blockElement cmdTypeOf
                                  , horizontalLine
                                  , listElement cmdTypeOf
                                  , definitionList cmdTypeOf
-                                 , pdata
+                                 , verbatim
                                  , leadingSpaced cmdTypeOf
                                  , paragraph cmdTypeOf
                                  , blockCmd cmdTypeOf
@@ -104,6 +104,7 @@ listElement cmdTypeOf = listElement' []
       toType :: Char -> ListType
       toType '*' = Bullet
       toType '#' = Numbered
+      toType _   = undefined
 
 
 definitionList :: CommandTypeOf -> Parser BlockElement
@@ -149,19 +150,19 @@ definitionList cmdTypeOf = many1 definition >>= return . DefinitionList
                     "description of term"
 
 
-pdata :: Parser BlockElement
-pdata = do try (string "<![PDATA[")
-           many (oneOf " \t\n")
-           x <- pdata'
-           return (Preformatted [Text x])
+verbatim :: Parser BlockElement
+verbatim = do try (string "<!verbatim[")
+              many (oneOf " \t\n")
+              x <- verbatim'
+              return (Preformatted [Text x])
     where
-      pdata' :: Parser String
-      pdata' = do try (many (oneOf " \t\n") >> string "]]>")
-                  return []
-               <|>
-               do x  <- anyChar
-                  xs <- pdata'
-                  return (x:xs)
+      verbatim' :: Parser String
+      verbatim' = do try (many (oneOf " \t\n") >> string "]>")
+                     return []
+                  <|>
+                  do x  <- anyChar
+                     xs <- verbatim'
+                     return (x:xs)
 
 
 leadingSpaced :: CommandTypeOf -> Parser BlockElement
@@ -186,10 +187,6 @@ leadingSpaced cmdTypeOf = (char ' ' >> leadingSpaced' >>= return . Preformatted)
                        return []
 
 
-blockCommand :: Parser BlockElement
-blockCommand = pzero -- not implemented
-
-
 paragraph :: CommandTypeOf -> Parser BlockElement
 paragraph cmdTypeOf = paragraph' >>= return . Paragraph
     where
@@ -279,7 +276,7 @@ blockCmd cmdTypeOf
 inlineElement :: CommandTypeOf -> Parser InlineElement
 inlineElement cmdTypeOf
     = try $ do skipMany comment
-               foldr (<|>) pzero [ cdata
+               foldr (<|>) pzero [ nowiki
                                  , apostrophes cmdTypeOf
                                  , text
                                  , objLink
@@ -289,16 +286,16 @@ inlineElement cmdTypeOf
                                  ]
 
 
-cdata :: Parser InlineElement
-cdata = try (string "<![CDATA[") >> cdata' >>= return . Text
+nowiki :: Parser InlineElement
+nowiki = try (string "<!nowiki[") >> nowiki' >>= return . Text
     where
-      cdata' :: Parser String
-      cdata' = do try (string "]]>")
-                  return []
-               <|>
-               do x  <- anyChar
-                  xs <- cdata'
-                  return (x:xs)
+      nowiki' :: Parser String
+      nowiki' = do try (string "]>")
+                   return []
+                <|>
+                do x  <- anyChar
+                   xs <- nowiki'
+                   return (x:xs)
 
 
 text :: Parser InlineElement
@@ -346,11 +343,11 @@ apostrophes cmdTypeOf = foldr (<|>) pzero (map try [apos1, apos2, apos3, apos4,
 
 objLink :: Parser InlineElement
 objLink = do try (string "[[[")
-             page <- many1 (noneOf "|]")
-             text <- option Nothing
-                     (char '|' >> many1 (satisfy (/= ']')) >>= return . Just)
+             page  <- many1 (noneOf "|]")
+             label <- option Nothing
+                      (char '|' >> many1 (satisfy (/= ']')) >>= return . Just)
              string "]]]"
-             return $ ObjectLink page text
+             return $ ObjectLink page label
           <?>
           "object link"
 
@@ -361,7 +358,7 @@ pageLink = do try (string "[[")
                           (many1 (noneOf "#|]") >>= return . Just)
               fragment <- option Nothing
                           (char '#' >> many1 (noneOf "|]") >>= return . Just)
-              text     <- option Nothing
+              label    <- option Nothing
                           (char '|' >> many1 (satisfy (/= ']')) >>= return . Just)
 
               case (page, fragment) of
@@ -369,7 +366,7 @@ pageLink = do try (string "[[")
                 (_, _)             -> return ()
 
               string "]]"
-              return $ PageLink page fragment text
+              return $ PageLink page fragment label
            <?>
            "page link"
 
@@ -378,11 +375,11 @@ extLink :: Parser InlineElement
 extLink = do char '['
              uriStr <- many1 (noneOf " \t]")
              skipMany (oneOf " \t")
-             text <- option Nothing
-                     (many1 (noneOf "]") >>= return . Just)
+             label  <- option Nothing
+                       (many1 (noneOf "]") >>= return . Just)
              
              case parseURI uriStr of
-               Just uri -> char ']' >> return (ExternalLink uri text)
+               Just uri -> char ']' >> return (ExternalLink uri label)
                Nothing  -> pzero <?> "absolute URI"
           <?>
           "external link"