From 0b6dc98a0aba0e76567744c00ed6840215ca5d9d Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Sun, 31 Dec 2006 17:34:06 +0000 Subject: Changed Markdown reader so that the first pass, in which a list of reference keys is made, is much faster. This gets us a big performance boost. git-svn-id: https://pandoc.googlecode.com/svn/trunk@353 788f1e2b-df1e-0410-8736-df70ead52e1b --- src/Text/Pandoc/Readers/Markdown.hs | 5 +++-- src/Text/ParserCombinators/Pandoc.hs | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 585f813d7..4d49e1f28 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -163,7 +163,8 @@ parseMarkdown = do (title, author, date) <- option ([],[],"") titleBlock oldState <- getState oldInput <- getInput - parseBlocks -- go through once just to get list of reference keys + -- go through once just to get list of reference keys + manyTill (referenceKey <|> (do{anyLine; return Null})) eof newState <- getState let keysUsed = stateKeysUsed newState setInput oldInput @@ -492,7 +493,7 @@ rawHtmlBlocks = try (do -- referenceKey = try (do - skipSpaces + skipNonindentSpaces label <- reference char labelSep skipSpaces diff --git a/src/Text/ParserCombinators/Pandoc.hs b/src/Text/ParserCombinators/Pandoc.hs index 732d1b06d..55481b8dc 100644 --- a/src/Text/ParserCombinators/Pandoc.hs +++ b/src/Text/ParserCombinators/Pandoc.hs @@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Special parser combinators for Pandoc readers. -} module Text.ParserCombinators.Pandoc ( + anyLine, many1Till, followedBy', notFollowedBy', @@ -47,6 +48,10 @@ import Text.Pandoc.Definition import Text.Pandoc.Shared import Char ( toUpper, toLower ) +--- | Parse any line of text +anyLine :: GenParser Char st [Char] +anyLine = manyTill anyChar (newline <|> (do{eof; return '\n'})) + -- | Parses a character and returns 'Null' (so that the parser can move on -- if it gets stuck). nullBlock :: GenParser Char st Block -- cgit v1.2.3