diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2017-03-11 18:42:39 +0100 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2017-03-11 18:42:39 +0100 |
| commit | be733385c9457a006da2b5d92fed0077401c3d1c (patch) | |
| tree | 27e04c79a03184678aeaf32327bce30337b1494a | |
| parent | ac15b0443f942771003508ccbe891954242fd07f (diff) | |
| download | pandoc-be733385c9457a006da2b5d92fed0077401c3d1c.tar.gz | |
Markdown reader: optimized nonindentSpaces.
Makes the benchmark go from 40 to 36 ms.
| -rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 2cd1c0d83..169872391 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -133,17 +133,14 @@ indentSpaces = try $ do nonindentSpaces :: PandocMonad m => MarkdownParser m String nonindentSpaces = do - tabStop <- getOption readerTabStop - sps <- many (char ' ') - if length sps < tabStop - then return sps - else unexpected "indented line" + n <- skipNonindentSpaces + return $ replicate n ' ' -- returns number of spaces parsed skipNonindentSpaces :: PandocMonad m => MarkdownParser m Int skipNonindentSpaces = do tabStop <- getOption readerTabStop - atMostSpaces (tabStop - 1) <* notFollowedBy (char ' ') + atMostSpaces (tabStop - 1) <* notFollowedBy spaceChar atMostSpaces :: PandocMonad m => Int -> MarkdownParser m Int atMostSpaces n |
