diff --git a/src/Text/Pandoc/Readers/TWiki.hs b/src/Text/Pandoc/Readers/TWiki.hs index 07b9d8393..ff966d262 100644 --- a/src/Text/Pandoc/Readers/TWiki.hs +++ b/src/Text/Pandoc/Readers/TWiki.hs @@ -16,7 +16,7 @@ module Text.Pandoc.Readers.TWiki ( readTWiki import Control.Monad import Control.Monad.Except (throwError) -import Data.Char (isAlphaNum) +import Data.Char (isAlphaNum, isDigit, isUpperCase, isLowerCase, isLetter) import qualified Data.Foldable as F import Data.Maybe (fromMaybe) import Data.Text (Text) @@ -469,7 +469,7 @@ link = try $ do st <- getState guard $ stateAllowLinks st setState $ st{ stateAllowLinks = False } - (url, title, content) <- linkText + (url, title, content) <- linkText <|> simpleWikiLink setState $ st{ stateAllowLinks = True } return $ B.link url title content @@ -483,3 +483,15 @@ linkText = do where linkContent = char '[' >> many1Till anyChar (char ']') >>= parseLinkContent . T.pack parseLinkContent = parseFromString' $ many1 inline + +simpleWikiLink :: PandocMonad m => TWParser m (Text, Text, B.Inlines) +simpleWikiLink = do + w <- wikiWord + return (w, "wikilink", B.str w) + where + wikiWord = do + cs <- many1 $ satisfy (\x -> isLetter x && isUpperCase x) + ds <- many1 $ satisfy (\x -> isDigit x || (isLetter x && isLowerCase x)) + es <- many1 $ satisfy (\x -> isLetter x && isUpperCase x) + fs <- many $ satisfy isAlphaNum + return $ T.pack $ cs ++ ds ++ es ++ fs diff --git a/test/twiki-reader.native b/test/twiki-reader.native index e41301966..950eceb60 100644 --- a/test/twiki-reader.native +++ b/test/twiki-reader.native @@ -147,6 +147,22 @@ Pandoc ] ] , Para [ Str "Nother" , Space , Str "paragraph." ] + , Header + 1 + ( "internal-links" , [] , [] ) + [ Str "internal" , Space , Str "links" ] + , Para + [ Link + ( "" , [] , [] ) + [ Str "MySimplePage" ] + ( "MySimplePage" , "wikilink" ) + ] + , Para + [ Link + ( "" , [] , [] ) + [ Str "My23Page23" ] + ( "My23Page23" , "wikilink" ) + ] , Header 1 ( "external-links" , [] , [] ) diff --git a/test/twiki-reader.twiki b/test/twiki-reader.twiki index c2df10573..e3ee1cac2 100644 --- a/test/twiki-reader.twiki +++ b/test/twiki-reader.twiki @@ -93,6 +93,12 @@ With two paragraphs. Nother paragraph. +---+ internal links + +MySimplePage + +My23Page23 + ---+ external links [[http://google.com][Google search engine]]