@@ -89,7 +89,7 @@ nested p = do
89 return res
89 return res
91specialChars :: [Char]
91specialChars :: [Char]
92−specialChars = "'[]<=&*{}|"
92+specialChars = "'[]<=&*{}|\""
94spaceChars :: [Char]
94spaceChars :: [Char]
95spaceChars = " \n\t"
95spaceChars = " \n\t"
@@ -445,6 +445,7 @@ inline :: MWParser Inlines
445inline = whitespace
445inline = whitespace
448 <|> strong
449 <|> strong
450 <|> image
451 <|> image
@@ -540,7 +541,7 @@ internalLink = try $ do
540 -- [[Help:Contents|] -> "Contents"
541 -- [[Help:Contents|] -> "Contents"
541 <|> (return $ B.text $ drop 1 $ dropWhile (/=':') pagename) )
542 <|> (return $ B.text $ drop 1 $ dropWhile (/=':') pagename) )
543− linktrail <- B.text <$> many (char '\'' <|> letter)
544+ linktrail <- B.text <$> many letter
544 let link = B.link (addUnderscores pagename) "wikilink" (label <> linktrail)
545 let link = B.link (addUnderscores pagename) "wikilink" (label <> linktrail)
545 if "Category:" `isPrefixOf` pagename
546 if "Category:" `isPrefixOf` pagename
@@ -582,3 +583,10 @@ strong = B.strong <$> nested (inlinesBetween start end)
582 where start = sym "'''" >> lookAhead nonspaceChar
583 where start = sym "'''" >> lookAhead nonspaceChar
583 end = try $ sym "'''"
584 end = try $ sym "'''"
586+doubleQuotes :: MWParser Inlines
587+doubleQuotes = B.doubleQuoted . trimInlines . mconcat <$> try
588+ ((getState >>= guard . readerSmart . mwOptions) *>
589+ openDoubleQuote *> manyTill inline closeDoubleQuote )
590+ where openDoubleQuote = char '"' <* lookAhead alphaNum
591+ closeDoubleQuote = char '"' <* notFollowedBy alphaNum