diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2022-03-24 23:38:49 -0700 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2022-03-24 23:39:14 -0700 |
| commit | 36786e86fb20cd5da1ab0f31f039dcb5931c8ab6 (patch) | |
| tree | 5106e56ae22a19f9bd95e8c2973227db2b5db0aa /src | |
| parent | 0de829090c814d02a5b8fb3b77c9b21325c10739 (diff) | |
RTF reader: more memory usage optimizations.
See #7943.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Readers/RTF.hs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/RTF.hs b/src/Text/Pandoc/Readers/RTF.hs index 687296277..60880292c 100644 --- a/src/Text/Pandoc/Readers/RTF.hs +++ b/src/Text/Pandoc/Readers/RTF.hs @@ -216,7 +216,7 @@ parseRTF = do kvs <- sMetadata <$> getState pure $ foldr (uncurry B.setMeta) doc kvs -data Tok = Tok SourcePos TokContents +data Tok = Tok !SourcePos !TokContents deriving (Show, Eq) data TokContents = @@ -273,10 +273,10 @@ tok = do y <- hexDigit return $ hexToWord (T.pack [x,y]) letterSequence = T.pack <$> many1 (satisfy (\c -> isAscii c && isLetter c)) - unformattedText = - UnformattedText . T.pack . mconcat <$> - many1 ( many1 (satisfy (not . isSpecial)) - <|> ("" <$ nl)) + unformattedText = do + ts <- many1 ( many1 (satisfy (not . isSpecial)) + <|> ("" <$ nl)) + return $! UnformattedText $! T.pack $ mconcat ts grouped = Grouped <$> (char '{' *> skipMany nl *> manyTill tok (char '}')) nl :: PandocMonad m => RTFParser m () |
