From 35cc1d99ca8c8986869890bdf8de0930b5b3bd3c Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Tue, 12 Feb 2013 11:27:42 -0800 Subject: Markdown reader: Make backslash escape work in attributes. --- src/Text/Pandoc/Readers/Markdown.hs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/Text/Pandoc/Readers') diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 04f839612..5a257a51e 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -477,7 +477,7 @@ blockDelimiter f len = try $ do Nothing -> count 3 (char c) >> many (char c) >>= return . (+ 3) . length -attributes :: Parser [Char] st (String, [String], [(String, String)]) +attributes :: MarkdownParser (String, [String], [(String, String)]) attributes = try $ do char '{' spnl @@ -489,34 +489,34 @@ attributes = try $ do | otherwise = firstNonNull xs return (firstNonNull $ reverse ids, concat classes, concat keyvals) -attribute :: Parser [Char] st (String, [String], [(String, String)]) +attribute :: MarkdownParser (String, [String], [(String, String)]) attribute = identifierAttr <|> classAttr <|> keyValAttr -identifier :: Parser [Char] st String +identifier :: MarkdownParser String identifier = do first <- letter rest <- many $ alphaNum <|> oneOf "-_:." return (first:rest) -identifierAttr :: Parser [Char] st (String, [a], [a1]) +identifierAttr :: MarkdownParser (String, [a], [a1]) identifierAttr = try $ do char '#' result <- identifier return (result,[],[]) -classAttr :: Parser [Char] st (String, [String], [a]) +classAttr :: MarkdownParser (String, [String], [a]) classAttr = try $ do char '.' result <- identifier return ("",[result],[]) -keyValAttr :: Parser [Char] st (String, [a], [(String, String)]) +keyValAttr :: MarkdownParser (String, [a], [(String, String)]) keyValAttr = try $ do key <- identifier char '=' - val <- enclosed (char '"') (char '"') anyChar - <|> enclosed (char '\'') (char '\'') anyChar - <|> many (noneOf " \t\n\r}") + val <- enclosed (char '"') (char '"') litChar + <|> enclosed (char '\'') (char '\'') litChar + <|> many (escapedChar' <|> noneOf " \t\n\r}") return ("",[],[(key,val)]) codeBlockFenced :: MarkdownParser (F Blocks) -- cgit v1.2.3