diff options
| -rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 27 | ||||
| -rw-r--r-- | test/Tests/Readers/Markdown.hs | 4 |
2 files changed, 16 insertions, 15 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 9f45154ed..31d1b5198 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -1843,19 +1843,20 @@ linkTitle = quotedTitle '"' <|> quotedTitle '\'' wikilink :: PandocMonad m => (Attr -> Text -> Text -> Inlines -> Inlines) -> MarkdownParser m (F Inlines) -wikilink constructor = - (guardEnabled Ext_wikilinks_title_after_pipe *> wikilink' swap) <|> - (guardEnabled Ext_wikilinks_title_before_pipe *> wikilink' id) - where - swap (a, b) = (b, a) - wikilink' order = try $ do - string "[[" - notFollowedBy' (char '[') - raw <- many1TillChar (noneOf "\n\r\f\t") (try $ string "]]") - let (title, url) = case T.break (== '|') raw of - (before, "") -> (before, before) - (before, after) -> order (before, T.drop 1 after) - return . pure . constructor nullAttr url "wikilink" $ B.str title +wikilink constructor = do + titleAfter <- + (True <$ guardEnabled Ext_wikilinks_title_after_pipe) <|> + (False <$ guardEnabled Ext_wikilinks_title_before_pipe) + string "[[" *> notFollowedBy' (char '[') + raw <- many1TillChar anyChar (try $ string "]]") + let (title, url) = case T.break (== '|') raw of + (before, "") -> (before, before) + (before, after) + | titleAfter -> (T.drop 1 after, before) + | otherwise -> (before, T.drop 1 after) + guard $ T.all (`notElem` ['\n','\r','\f','\t']) url + return . pure . constructor nullAttr url "wikilink" $ + B.text $ fromEntities title link :: PandocMonad m => MarkdownParser m (F Inlines) link = try $ do diff --git a/test/Tests/Readers/Markdown.hs b/test/Tests/Readers/Markdown.hs index 86c424d4b..001ca0207 100644 --- a/test/Tests/Readers/Markdown.hs +++ b/test/Tests/Readers/Markdown.hs @@ -321,10 +321,10 @@ tests = [ testGroup "inline code" para (link "random string" "wikilink" (str "title")) , test markdownGH "autolink not being a link" $ "[[Name of page]]" =?> - para (link "Name of page" "wikilink" (str "Name of page")) + para (link "Name of page" "wikilink" (text "Name of page")) , test markdownGH "autolink not being a link with a square bracket" $ "[[Name of ]page]]" =?> - para (link "Name of ]page" "wikilink" (str "Name of ]page")) + para (link "Name of ]page" "wikilink" (text "Name of ]page")) , test markdownGH "link with inline start should be a link" $ "[[t`i*t_le|https://example.org]]" =?> para (link "https://example.org" "wikilink" (str "t`i*t_le")) |
