aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2013-03-13 19:18:20 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2013-03-13 19:20:25 -0700
commitdb3d4113a2c3ef8f36329f08afa02828df79ec75 (patch)
tree407d8d7b3288f4430758d62e303edab6e0c25498 /src
parentd820eb2c47bccfd81a51503e997596addb584198 (diff)
downloadpandoc-db3d4113a2c3ef8f36329f08afa02828df79ec75.tar.gz
Markdown reader: don't lose parentheses in URLs.
Added tests. This fixes a regression from 1.10.x. Closes #786.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 591fcf155..dcab2cea0 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -287,8 +287,7 @@ referenceKey = try $ do
referenceTitle :: MarkdownParser String
referenceTitle = try $ do
skipSpaces >> optional newline >> skipSpaces
- let parenTit = charsInBalanced '(' ')' litChar
- quotedTitle '"' <|> quotedTitle '\'' <|> parenTit
+ quotedTitle '"' <|> quotedTitle '\'' <|> charsInBalanced '(' ')' litChar
-- A link title in quotes
quotedTitle :: Char -> MarkdownParser String
@@ -1494,13 +1493,18 @@ reference :: MarkdownParser (F Inlines, String)
reference = do notFollowedBy' (string "[^") -- footnote reference
withRaw $ trimInlinesF <$> inlinesInBalancedBrackets
+parenthesizedChars :: MarkdownParser [Char]
+parenthesizedChars = do
+ result <- charsInBalanced '(' ')' litChar
+ return $ '(' : result ++ ")"
+
-- source for a link, with optional title
source :: MarkdownParser (String, String)
source = do
char '('
skipSpaces
let urlChunk = try $ notFollowedBy (oneOf "\"')") >>
- (charsInBalanced '(' ')' litChar <|> count 1 litChar)
+ (parenthesizedChars <|> count 1 litChar)
let sourceURL = (unwords . words . concat) <$> many urlChunk
let betweenAngles = try $
char '<' >> manyTill litChar (char '>')