git.iko.soy/typeable/pandoc
on master help sign in
Markdown reader: Make backslash escape work in attributes.
35cc1d9John MacFarlane
src/Text/Pandoc/Readers/Markdown.hs+9−9
@@ -477,7 +477,7 @@ blockDelimiter f len = try $ do
477 Nothing -> count 3 (char c) >> many (char c) >>=
477 Nothing -> count 3 (char c) >> many (char c) >>=
478 return . (+ 3) . length
478 return . (+ 3) . length
479
479
480−attributes :: Parser [Char] st (String, [String], [(String, String)])
480+attributes :: MarkdownParser (String, [String], [(String, String)])
481attributes = try $ do
481attributes = try $ do
482 char '{'
482 char '{'
483 spnl
483 spnl
@@ -489,34 +489,34 @@ attributes = try $ do
489 | otherwise = firstNonNull xs
489 | otherwise = firstNonNull xs
490 return (firstNonNull $ reverse ids, concat classes, concat keyvals)
490 return (firstNonNull $ reverse ids, concat classes, concat keyvals)
491
491
492−attribute :: Parser [Char] st (String, [String], [(String, String)])
492+attribute :: MarkdownParser (String, [String], [(String, String)])
493attribute = identifierAttr <|> classAttr <|> keyValAttr
493attribute = identifierAttr <|> classAttr <|> keyValAttr
494
494
495−identifier :: Parser [Char] st String
495+identifier :: MarkdownParser String
496identifier = do
496identifier = do
497 first <- letter
497 first <- letter
498 rest <- many $ alphaNum <|> oneOf "-_:."
498 rest <- many $ alphaNum <|> oneOf "-_:."
499 return (first:rest)
499 return (first:rest)
500
500
501−identifierAttr :: Parser [Char] st (String, [a], [a1])
501+identifierAttr :: MarkdownParser (String, [a], [a1])
502identifierAttr = try $ do
502identifierAttr = try $ do
503 char '#'
503 char '#'
504 result <- identifier
504 result <- identifier
505 return (result,[],[])
505 return (result,[],[])
506
506
507−classAttr :: Parser [Char] st (String, [String], [a])
507+classAttr :: MarkdownParser (String, [String], [a])
508classAttr = try $ do
508classAttr = try $ do
509 char '.'
509 char '.'
510 result <- identifier
510 result <- identifier
511 return ("",[result],[])
511 return ("",[result],[])
512
512
513−keyValAttr :: Parser [Char] st (String, [a], [(String, String)])
513+keyValAttr :: MarkdownParser (String, [a], [(String, String)])
514keyValAttr = try $ do
514keyValAttr = try $ do
515 key <- identifier
515 key <- identifier
516 char '='
516 char '='
517− val <- enclosed (char '"') (char '"') anyChar
517+ val <- enclosed (char '"') (char '"') litChar
518− <|> enclosed (char '\'') (char '\'') anyChar
518+ <|> enclosed (char '\'') (char '\'') litChar
519− <|> many (noneOf " \t\n\r}")
519+ <|> many (escapedChar' <|> noneOf " \t\n\r}")
520 return ("",[],[(key,val)])
520 return ("",[],[(key,val)])
521
521
522codeBlockFenced :: MarkdownParser (F Blocks)
522codeBlockFenced :: MarkdownParser (F Blocks)