git.iko.soy/typeable/pandoc
on master help sign in
Use foldl' instead of foldl everywhere.
commit24191a2a278c0dec30bacd66b78cbb8cc8d91324 authorJohn MacFarlane <jgm@berkeley.edu> dateMon 15 Mar 2021, 10:37 (6 years ago) parent39934c8
16 files changed+34−29
src/Text/Pandoc/App/CommandLineOptions.hs+2−2 src/Text/Pandoc/Citeproc/Locator.hs+2−1 src/Text/Pandoc/Class/PandocMonad.hs+2−1 src/Text/Pandoc/Extensions.hs+2−1 src/Text/Pandoc/Lua/Filter.hs+2−1 src/Text/Pandoc/Readers/Docx/Combine.hs+2−2 src/Text/Pandoc/Readers/HTML/TagCategories.hs+1 src/Text/Pandoc/Readers/Markdown.hs+3−3 src/Text/Pandoc/Readers/Odt/Arrows/State.hs+2−2 src/Text/Pandoc/Readers/Odt/Generic/XMLConverter.hs+2−2 src/Text/Pandoc/Readers/Odt/StyleReader.hs+2−2 src/Text/Pandoc/Readers/Textile.hs+2−2 src/Text/Pandoc/Shared.hs+2−2 src/Text/Pandoc/Writers/HTML.hs+4−4 src/Text/Pandoc/Writers/RST.hs+2−2 src/Text/Pandoc/Writers/Texinfo.hs+2−2
src/Text/Pandoc/App/CommandLineOptions.hs+2−2
@@ -31,7 +31,7 @@ import Data.Aeson.Encode.Pretty (encodePretty', Config(..), keyOrder,
3131 defConfig, Indent(..), NumberFormat(..))
3232import Data.Bifunctor (second)
3333import Data.Char (toLower)
34−import Data.List (intercalate, sort)
34+import Data.List (intercalate, sort, foldl')
3535#ifdef _WINDOWS
3636#if MIN_VERSION_base(4,12,0)
3737import Data.List (isPrefixOf)
@@ -93,7 +93,7 @@ parseOptionsFromArgs options' defaults prg rawArgs = do
9393 ("Try " ++ prg ++ " --help for more information.")
9494
9595 -- thread option data structure through all supplied option actions
96− opts <- foldl (>>=) (return defaults) actions
96+ opts <- foldl' (>>=) (return defaults) actions
9797 let mbArgs = case args of
9898 [] -> Nothing
9999 xs -> Just xs
src/Text/Pandoc/Citeproc/Locator.hs+2−1
@@ -7,6 +7,7 @@ where
77import Citeproc.Types
88import Data.Text (Text)
99import qualified Data.Text as T
10+import Data.List (foldl')
1011import Text.Parsec
1112import Text.Pandoc.Definition
1213import Text.Pandoc.Parsing (romanNumeral)
@@ -139,7 +140,7 @@ pBalancedBraces braces p = try $ do
139140 where
140141 except = notFollowedBy pBraces >> p
141142 -- outer and inner
142− surround = foldl (\a (open, close) -> sur open close except <|> a)
143+ surround = foldl' (\a (open, close) -> sur open close except <|> a)
143144 except
144145 braces
145146
src/Text/Pandoc/Class/PandocMonad.hs+2−1
@@ -59,6 +59,7 @@ import Control.Monad.Except (MonadError (catchError, throwError),
5959 MonadTrans, lift, when)
6060import Data.Digest.Pure.SHA (sha1, showDigest)
6161import Data.Maybe (fromMaybe)
62+import Data.List (foldl')
6263import Data.Time (UTCTime)
6364import Data.Time.Clock.POSIX (POSIXTime, utcTimeToPOSIXSeconds,
6465 posixSecondsToUTCTime)
@@ -612,7 +613,7 @@ checkExistence fn = do
612613-- | Canonicalizes a file path by removing redundant @.@ and @..@.
613614makeCanonical :: FilePath -> FilePath
614615makeCanonical = Posix.joinPath . transformPathParts . splitDirectories
615− where transformPathParts = reverse . foldl go []
616+ where transformPathParts = reverse . foldl' go []
616617 go as "." = as
617618 go (_:as) ".." = as
618619 go as x = x : as
src/Text/Pandoc/Extensions.hs+2−1
@@ -34,6 +34,7 @@ module Text.Pandoc.Extensions ( Extension(..)
3434where
3535import Data.Bits (clearBit, setBit, testBit, (.|.))
3636import Data.Data (Data)
37+import Data.List (foldl')
3738import qualified Data.Text as T
3839import Data.Typeable (Typeable)
3940import GHC.Generics (Generic)
@@ -593,7 +594,7 @@ parseFormatSpec :: T.Text
593594parseFormatSpec = parse formatSpec ""
594595 where formatSpec = do
595596 name <- formatName
596− (extsToEnable, extsToDisable) <- foldl (flip ($)) ([],[]) <$>
597+ (extsToEnable, extsToDisable) <- foldl' (flip ($)) ([],[]) <$>
597598 many extMod
598599 return (T.pack name, reverse extsToEnable, reverse extsToDisable)
599600 formatName = many1 $ noneOf "-+"
src/Text/Pandoc/Lua/Filter.hs+2−1
@@ -22,6 +22,7 @@ import Control.Monad.Catch (finally, try)
2222import Data.Data (Data, DataType, dataTypeConstrs, dataTypeName, dataTypeOf,
2323 showConstr, toConstr, tyconUQname)
2424import Data.Foldable (foldrM)
25+import Data.List (foldl')
2526import Data.Map (Map)
2627import Data.Maybe (fromMaybe)
2728import Foreign.Lua (Lua, Peekable, Pushable, StackIndex)
@@ -204,7 +205,7 @@ walkMeta lf (Pandoc m bs) = do
204205
205206walkPandoc :: LuaFilter -> Pandoc -> Lua Pandoc
206207walkPandoc (LuaFilter fnMap) =
207− case foldl mplus Nothing (map (`Map.lookup` fnMap) pandocFilterNames) of
208+ case foldl' mplus Nothing (map (`Map.lookup` fnMap) pandocFilterNames) of
208209 Just fn -> \x -> runFilterFunction fn x *> singleElement x
209210 Nothing -> return
210211
src/Text/Pandoc/Readers/Docx/Combine.hs+2−2
@@ -182,7 +182,7 @@ isAttrModifier _ = False
182182
183183smushInlines :: [Inlines] -> Inlines
184184smushInlines xs = combineInlines xs' mempty
185− where xs' = foldl combineInlines mempty xs
185+ where xs' = foldl' combineInlines mempty xs
186186
187187smushBlocks :: [Blocks] -> Blocks
188−smushBlocks xs = foldl combineBlocks mempty xs
188+smushBlocks xs = foldl' combineBlocks mempty xs
src/Text/Pandoc/Readers/HTML/TagCategories.hs+1
@@ -23,6 +23,7 @@ where
2323
2424import Data.Set (Set, fromList, unions)
2525import Data.Text (Text)
26+import Data.List (foldl')
2627
2728eitherBlockOrInline :: Set Text
2829eitherBlockOrInline = fromList
src/Text/Pandoc/Readers/Markdown.hs+3−3
@@ -21,7 +21,7 @@ module Text.Pandoc.Readers.Markdown (
2121import Control.Monad
2222import Control.Monad.Except (throwError)
2323import Data.Char (isAlphaNum, isPunctuation, isSpace)
24−import Data.List (transpose, elemIndex, sortOn)
24+import Data.List (transpose, elemIndex, sortOn, foldl')
2525import qualified Data.Map as M
2626import Data.Maybe
2727import qualified Data.Set as Set
@@ -357,7 +357,7 @@ referenceKey = try $ do
357357 addKvs <- option [] $ guardEnabled Ext_mmd_link_attributes
358358 >> many (try $ spnl >> keyValAttr)
359359 blanklines
360− let attr' = extractIdClass $ foldl (\x f -> f x) attr addKvs
360+ let attr' = extractIdClass $ foldl' (\x f -> f x) attr addKvs
361361 target = (escapeURI $ trimr src, tit)
362362 st <- getState
363363 let oldkeys = stateKeys st
@@ -613,7 +613,7 @@ attributes = try $ do
613613 spnl
614614 attrs <- many (attribute <* spnl)
615615 char '}'
616− return $ foldl (\x f -> f x) nullAttr attrs
616+ return $ foldl' (\x f -> f x) nullAttr attrs
617617
618618attribute :: PandocMonad m => MarkdownParser m (Attr -> Attr)
619619attribute = identifierAttr <|> classAttr <|> keyValAttr <|> specialAttr
src/Text/Pandoc/Readers/Odt/Arrows/State.hs+2−2
@@ -22,7 +22,7 @@ module Text.Pandoc.Readers.Odt.Arrows.State where
2222import Control.Arrow
2323import qualified Control.Category as Cat
2424import Control.Monad
25−
25+import Data.List (foldl')
2626import Text.Pandoc.Readers.Odt.Arrows.Utils
2727import Text.Pandoc.Readers.Odt.Generic.Fallible
2828
@@ -122,7 +122,7 @@ iterateS a = ArrowState $ \(s,f) -> foldr a' (s,mzero) f
122122iterateSL :: (Foldable f, MonadPlus m)
123123 => ArrowState s x y
124124 -> ArrowState s (f x) (m y)
125−iterateSL a = ArrowState $ \(s,f) -> foldl a' (s,mzero) f
125+iterateSL a = ArrowState $ \(s,f) -> foldl' a' (s,mzero) f
126126 where a' (s',m) x = second (mplus m.return) $ runArrowState a (s',x)
127127
128128
src/Text/Pandoc/Readers/Odt/Generic/XMLConverter.hs+2−2
@@ -64,12 +64,12 @@ import qualified Data.Map as M
6464import Data.Text (Text)
6565import Data.Default
6666import Data.Maybe
67+import Data.List (foldl')
6768
6869import qualified Text.Pandoc.XML.Light as XML
6970
7071import Text.Pandoc.Readers.Odt.Arrows.State
7172import Text.Pandoc.Readers.Odt.Arrows.Utils
72−
7373import Text.Pandoc.Readers.Odt.Generic.Namespaces
7474import Text.Pandoc.Readers.Odt.Generic.Utils
7575import Text.Pandoc.Readers.Odt.Generic.Fallible
@@ -293,7 +293,7 @@ readNSattributes = fromState $ \state -> maybe (state, failEmpty )
293293 => XMLConverterState nsID extraState
294294 -> Maybe (XMLConverterState nsID extraState)
295295 extractNSAttrs startState
296− = foldl (\state d -> state >>= addNS d)
296+ = foldl' (\state d -> state >>= addNS d)
297297 (Just startState)
298298 nsAttribs
299299 where nsAttribs = mapMaybe readNSattr (XML.elAttribs element)
src/Text/Pandoc/Readers/Odt/StyleReader.hs+2−2
@@ -44,7 +44,7 @@ import Control.Arrow
4444
4545import Data.Default
4646import qualified Data.Foldable as F
47−import Data.List (unfoldr)
47+import Data.List (unfoldr, foldl')
4848import qualified Data.Map as M
4949import Data.Maybe
5050import Data.Text (Text)
@@ -120,7 +120,7 @@ fontPitchReader = executeInSub NsOffice "font-face-decls" (
120120 &&&
121121 lookupDefaultingAttr NsStyle "font-pitch"
122122 ))
123− >>?^ ( M.fromList . foldl accumLegalPitches [] )
123+ >>?^ ( M.fromList . foldl' accumLegalPitches [] )
124124 ) `ifFailedDo` returnV (Right M.empty)
125125 where accumLegalPitches ls (Nothing,_) = ls
126126 accumLegalPitches ls (Just n,p) = (n,p):ls
src/Text/Pandoc/Readers/Textile.hs+2−2
@@ -38,7 +38,7 @@ module Text.Pandoc.Readers.Textile ( readTextile) where
3838import Control.Monad (guard, liftM)
3939import Control.Monad.Except (throwError)
4040import Data.Char (digitToInt, isUpper)
41−import Data.List (intersperse, transpose)
41+import Data.List (intersperse, transpose, foldl')
4242import Data.Text (Text)
4343import qualified Data.Text as T
4444import Text.HTML.TagSoup (Tag (..), fromAttrib)
@@ -627,7 +627,7 @@ code2 = do
627627
628628-- | Html / CSS attributes
629629attributes :: PandocMonad m => ParserT Text ParserState m Attr
630−attributes = foldl (flip ($)) ("",[],[]) <$>
630+attributes = foldl' (flip ($)) ("",[],[]) <$>
631631 try (do special <- option id specialAttribute
632632 attrs <- many attribute
633633 return (special : attrs))
src/Text/Pandoc/Shared.hs+2−2
@@ -109,7 +109,7 @@ import qualified Data.Bifunctor as Bifunctor
109109import Data.Char (isAlpha, isLower, isSpace, isUpper, toLower, isAlphaNum,
110110 generalCategory, GeneralCategory(NonSpacingMark,
111111 SpacingCombiningMark, EnclosingMark, ConnectorPunctuation))
112−import Data.List (find, intercalate, intersperse, sortOn)
112+import Data.List (find, intercalate, intersperse, sortOn, foldl')
113113import qualified Data.Map as M
114114import Data.Maybe (mapMaybe, fromMaybe)
115115import Data.Monoid (Any (..))
@@ -840,7 +840,7 @@ mapLeft = Bifunctor.first
840840-- > collapseFilePath "parent/foo/.." == "parent"
841841-- > collapseFilePath "/parent/foo/../../bar" == "/bar"
842842collapseFilePath :: FilePath -> FilePath
843−collapseFilePath = Posix.joinPath . reverse . foldl go [] . splitDirectories
843+collapseFilePath = Posix.joinPath . reverse . foldl' go [] . splitDirectories
844844 where
845845 go rs "." = rs
846846 go r@(p:rs) ".." = case p of
src/Text/Pandoc/Writers/HTML.hs+4−4
@@ -30,7 +30,7 @@ module Text.Pandoc.Writers.HTML (
3030 ) where
3131import Control.Monad.State.Strict
3232import Data.Char (ord)
33−import Data.List (intercalate, intersperse, partition, delete, (\\))
33+import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
3434import Data.List.NonEmpty (NonEmpty((:|)))
3535import Data.Maybe (fromMaybe, isJust, isNothing)
3636import qualified Data.Set as Set
@@ -544,7 +544,7 @@ tagWithAttributes opts html5 selfClosing tagname attr =
544544
545545addAttrs :: PandocMonad m
546546 => WriterOptions -> Attr -> Html -> StateT WriterState m Html
547−addAttrs opts attr h = foldl (!) h <$> attrsToHtml opts attr
547+addAttrs opts attr h = foldl' (!) h <$> attrsToHtml opts attr
548548
549549toAttrs :: PandocMonad m
550550 => [(Text, Text)] -> StateT WriterState m [Attribute]
@@ -926,7 +926,7 @@ blockToHtml opts (OrderedList (startnum, numstyle, _) lst) = do
926926 numstyle']
927927 else [])
928928 l <- ordList opts contents
929− return $ foldl (!) l attribs
929+ return $ foldl' (!) l attribs
930930blockToHtml opts (DefinitionList lst) = do
931931 contents <- mapM (\(term, defs) ->
932932 do term' <- liftM H.dt $ inlineListToHtml opts term
@@ -1407,7 +1407,7 @@ inlineToHtml opts inline = do
14071407 Just "audio" -> mediaTag H5.audio "Audio"
14081408 Just _ -> (H5.embed, [])
14091409 _ -> imageTag
1410− return $ foldl (!) tag $ attributes ++ specAttrs
1410+ return $ foldl' (!) tag $ attributes ++ specAttrs
14111411 -- note: null title included, as in Markdown.pl
14121412 (Note contents) -> do
14131413 notes <- gets stNotes
src/Text/Pandoc/Writers/RST.hs+2−2
@@ -16,7 +16,7 @@ reStructuredText: <http://docutils.sourceforge.net/rst.html>
1616module Text.Pandoc.Writers.RST ( writeRST, flatten ) where
1717import Control.Monad.State.Strict
1818import Data.Char (isSpace)
19−import Data.List (transpose, intersperse)
19+import Data.List (transpose, intersperse, foldl')
2020import Data.Maybe (fromMaybe)
2121import qualified Data.Text as T
2222import Data.Text (Text)
@@ -509,7 +509,7 @@ flatten outer
509509 | null contents = [outer]
510510 | otherwise = combineAll contents
511511 where contents = dropInlineParent outer
512− combineAll = foldl combine []
512+ combineAll = foldl' combine []
513513
514514 combine :: [Inline] -> Inline -> [Inline]
515515 combine f i =
src/Text/Pandoc/Writers/Texinfo.hs+2−2
@@ -15,7 +15,7 @@ module Text.Pandoc.Writers.Texinfo ( writeTexinfo ) where
1515import Control.Monad.Except (throwError)
1616import Control.Monad.State.Strict
1717import Data.Char (chr, ord)
18−import Data.List (maximumBy, transpose)
18+import Data.List (maximumBy, transpose, foldl')
1919import Data.Ord (comparing)
2020import qualified Data.Set as Set
2121import Data.Text (Text)
@@ -271,7 +271,7 @@ tableAnyRowToTexinfo :: PandocMonad m
271271 -> [[Block]]
272272 -> TI m (Doc Text)
273273tableAnyRowToTexinfo itemtype aligns cols =
274− (literal itemtype $$) . foldl (\row item -> row $$
274+ (literal itemtype $$) . foldl' (\row item -> row $$
275275 (if isEmpty row then empty else text " @tab ") <> item) empty <$> zipWithM alignedBlock aligns cols
276276
277277alignedBlock :: PandocMonad m