summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2022-03-24 23:38:49 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2022-03-24 23:39:14 -0700
commit36786e86fb20cd5da1ab0f31f039dcb5931c8ab6 (patch)
tree5106e56ae22a19f9bd95e8c2973227db2b5db0aa /src
parent0de829090c814d02a5b8fb3b77c9b21325c10739 (diff)
RTF reader: more memory usage optimizations.
See #7943.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Readers/RTF.hs10
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 ()