git.iko.soy/typeable/pandoc
on master help sign in
Markdown reader: Rewrote para parser for better efficiency.

This change avoids repeated parsing of inline lists for 'plain' blocks.

commitee0a0953de9b864a1a0cf6d3ddd3cff60a67915a authorJohn MacFarlane <jgm@berkeley.edu> dateFri 10 Dec 2010, 10:47 (16 years ago) parentbb609a8
1 file changed+8−10
src/Text/Pandoc/Readers/Markdown.hs+8−10
src/Text/Pandoc/Readers/Markdown.hs+8−10
@@ -650,16 +650,14 @@ isHtmlOrBlank _ = False
650650
651651para :: GenParser Char ParserState Block
652652para = try $ do
653− result <- many1 inline
654− if all isHtmlOrBlank result
655− then fail "treat as raw HTML"
656− else return ()
657− newline
658− blanklines <|> do st <- getState
659− if stateStrict st
660− then lookAhead (blockQuote <|> header) >> return ""
661− else pzero
662− return $ Para $ normalizeSpaces result
653+ result <- liftM normalizeSpaces $ many1 inline
654+ guard $ not . all isHtmlOrBlank $ result
655+ option (Plain result) $ try $ do
656+ newline
657+ blanklines <|>
658+ (getState >>= guard . stateStrict >>
659+ lookAhead (blockQuote <|> header) >> return "")
660+ return $ Para result
663661
664662plain :: GenParser Char ParserState Block
665663plain = many1 inline >>~ spaces >>= return . Plain . normalizeSpaces