aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/App/CommandLineOptions.hs5
-rw-r--r--src/Text/Pandoc/Citeproc/BibTeX.hs5
-rw-r--r--src/Text/Pandoc/Citeproc/Locator.hs4
-rw-r--r--src/Text/Pandoc/Citeproc/Name.hs4
-rw-r--r--src/Text/Pandoc/Format.hs4
-rw-r--r--src/Text/Pandoc/Readers/AsciiDoc.hs6
-rw-r--r--src/Text/Pandoc/Readers/Djot.hs3
-rw-r--r--src/Text/Pandoc/Readers/Docx.hs7
-rw-r--r--src/Text/Pandoc/Readers/HTML.hs8
-rw-r--r--src/Text/Pandoc/Readers/HTML/Table.hs6
-rw-r--r--src/Text/Pandoc/Readers/JATS.hs8
-rw-r--r--src/Text/Pandoc/Readers/LaTeX/Math.hs4
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs7
-rw-r--r--src/Text/Pandoc/Readers/ODT/Arrows/State.hs1
-rw-r--r--src/Text/Pandoc/Readers/ODT/Generic/XMLConverter.hs4
-rw-r--r--src/Text/Pandoc/Readers/ODT/StyleReader.hs6
-rw-r--r--src/Text/Pandoc/Readers/Org/Blocks.hs8
-rw-r--r--src/Text/Pandoc/Readers/RIS.hs4
-rw-r--r--src/Text/Pandoc/Readers/RTF.hs10
-rw-r--r--src/Text/Pandoc/Readers/Textile.hs5
-rw-r--r--src/Text/Pandoc/Shared.hs7
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs13
-rw-r--r--src/Text/Pandoc/Writers/LaTeX/Citation.hs6
-rw-r--r--src/Text/Pandoc/Writers/OpenDocument.hs5
-rw-r--r--src/Text/Pandoc/Writers/RST.hs5
-rw-r--r--src/Text/Pandoc/Writers/Shared.hs9
-rw-r--r--src/Text/Pandoc/Writers/Texinfo.hs5
27 files changed, 84 insertions, 75 deletions
diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs
index e9d5e0597..1020d716d 100644
--- a/src/Text/Pandoc/App/CommandLineOptions.hs
+++ b/src/Text/Pandoc/App/CommandLineOptions.hs
@@ -31,7 +31,8 @@ import Data.Aeson.Encode.Pretty (encodePretty', Config(..), keyOrder,
defConfig, Indent(..), NumberFormat(..))
import Data.Bifunctor (second)
import Data.Char (toLower)
-import Data.List (intercalate, sort, foldl')
+import Data.List (intercalate, sort)
+import qualified Data.List as L
#ifdef _WINDOWS
import Data.List (isPrefixOf)
#endif
@@ -100,7 +101,7 @@ parseOptionsFromArgs options' defaults prg rawArgs = do
if (null errors && null unknownOptionErrors)
then -- thread option data structure through all supplied option actions
- runExceptT $ adjustOpts <$> (foldl' (>>=) (return defaults) actions)
+ runExceptT $ adjustOpts <$> (L.foldl' (>>=) (return defaults) actions)
else return $ Left $ OptError $ PandocOptionError $ T.pack $
concat errors ++ unlines unknownOptionErrors ++
("Try " ++ prg ++ " --help for more information.")
diff --git a/src/Text/Pandoc/Citeproc/BibTeX.hs b/src/Text/Pandoc/Citeproc/BibTeX.hs
index 180f0988c..06696bcf3 100644
--- a/src/Text/Pandoc/Citeproc/BibTeX.hs
+++ b/src/Text/Pandoc/Citeproc/BibTeX.hs
@@ -52,7 +52,8 @@ import qualified Data.Sequence as Seq
import Data.Char (isAlphaNum, isDigit, isLetter,
isUpper, toLower, toUpper,
isLower, isPunctuation, isSpace)
-import Data.List (foldl', intercalate, intersperse)
+import Data.List (intercalate, intersperse)
+import qualified Data.List as L
import Safe (readMay)
import Text.Printf (printf)
import Text.DocLayout (literal, hsep, nest, hang, Doc(..),
@@ -1115,7 +1116,7 @@ toLiteralList [Plain xs] = toLiteralList [Para xs]
toLiteralList _ = mzero
concatWith :: Char -> [Inlines] -> Inlines
-concatWith sep = foldl' go mempty
+concatWith sep = L.foldl' go mempty
where go :: Inlines -> Inlines -> Inlines
go accum s
| s == mempty = accum
diff --git a/src/Text/Pandoc/Citeproc/Locator.hs b/src/Text/Pandoc/Citeproc/Locator.hs
index 8d8328270..d514b492f 100644
--- a/src/Text/Pandoc/Citeproc/Locator.hs
+++ b/src/Text/Pandoc/Citeproc/Locator.hs
@@ -11,7 +11,7 @@ import Citeproc.Types
import Text.Pandoc.Citeproc.Util (splitStrWhen)
import Data.Text (Text)
import qualified Data.Text as T
-import Data.List (foldl')
+import qualified Data.List as L
import Text.Pandoc.Definition
import Text.Pandoc.Parsing
import Text.Pandoc.Shared (stringify)
@@ -196,7 +196,7 @@ pBalancedBraces braces p = try $ do
where
except = notFollowedBy pBraces >> p
-- outer and inner
- surround = foldl' (\a (open, close) -> sur open close except <|> a)
+ surround = L.foldl' (\a (open, close) -> sur open close except <|> a)
except
braces
diff --git a/src/Text/Pandoc/Citeproc/Name.hs b/src/Text/Pandoc/Citeproc/Name.hs
index d62a9e4a1..68662cb57 100644
--- a/src/Text/Pandoc/Citeproc/Name.hs
+++ b/src/Text/Pandoc/Citeproc/Name.hs
@@ -30,7 +30,7 @@ import Text.Pandoc.Citeproc.Util (splitStrWhen)
import qualified Data.Text as T
import Data.List.Split (splitWhen, wordsBy)
import Data.Char (isUpper, isDigit)
-import Data.List (foldl')
+import qualified Data.List as L
emptyName :: Name
emptyName =
@@ -83,7 +83,7 @@ toName _ ils@(Str ys:_) | T.any (== '=') ys = do
ag{ nameSuffix = Just $ stringify xs }
addPart ag (Space : xs) = addPart ag xs
addPart ag _ = ag
- return $ foldl' addPart emptyName commaParts
+ return $ L.foldl' addPart emptyName commaParts
-- First von Last
-- von Last, First
-- von Last, Jr ,First
diff --git a/src/Text/Pandoc/Format.hs b/src/Text/Pandoc/Format.hs
index 5b87a2531..788e2db4d 100644
--- a/src/Text/Pandoc/Format.hs
+++ b/src/Text/Pandoc/Format.hs
@@ -22,7 +22,7 @@ module Text.Pandoc.Format
import Control.Monad.Except (throwError)
import Data.Char (toLower)
import Data.Foldable (asum)
-import Data.List (foldl')
+import qualified Data.List as L
import System.FilePath (splitExtension, takeExtension)
import Text.Pandoc.Class (PandocMonad)
import Text.Pandoc.Error (PandocError (..))
@@ -142,7 +142,7 @@ parseFlavoredFormat spec =
pExtensionsDiff :: (UpdateSourcePos s Char, Stream s m Char)
=> ParsecT s u m ExtensionsDiff
-pExtensionsDiff = foldl' (flip ($)) mempty <$> many extMod
+pExtensionsDiff = L.foldl' (flip ($)) mempty <$> many extMod
where
extMod = do
polarity <- oneOf "-+"
diff --git a/src/Text/Pandoc/Readers/AsciiDoc.hs b/src/Text/Pandoc/Readers/AsciiDoc.hs
index 391c38b30..965e47fa1 100644
--- a/src/Text/Pandoc/Readers/AsciiDoc.hs
+++ b/src/Text/Pandoc/Readers/AsciiDoc.hs
@@ -37,7 +37,7 @@ import Text.Pandoc.Parsing (newPos, sourceName)
import Text.Pandoc.Logging
import Text.Pandoc.Sources
import Control.Monad.State
-import Data.List (intersperse, foldl')
+import qualified Data.List as L
import Data.Char (chr, ord)
import qualified Data.Text as T
import qualified Data.Map as M
@@ -148,7 +148,7 @@ doMeta meta = do
B.setMeta "version" vers .
maybe id (B.setMeta "date") mbdate .
maybe id (B.setMeta "remark") mbremark) .
- flip (foldl' (\m (k,v) ->
+ flip (L.foldl' (\m (k,v) ->
-- leave out flags that are set just for processing
if k == "sectids" || k == "stem"
then m
@@ -363,7 +363,7 @@ doInline (A.Inline (A.Attr _ps kvs') it) = do
(B.str ("[" <> t <> "]"))
A.Button t -> pure $ B.spanWith ("",["button"],[])
(B.strong $ B.str ("[" <> t <> "]"))
- A.Kbd ts -> pure $ mconcat $ intersperse (B.str "+") $
+ A.Kbd ts -> pure $ mconcat $ L.intersperse (B.str "+") $
map (B.spanWith ("",["kbd"],[]) . B.strong . B.str) ts
A.Menu ts -> pure $ B.spanWith ("",["menu"],[]) $
B.strong $ B.text $ T.intercalate " › " ts
diff --git a/src/Text/Pandoc/Readers/Djot.hs b/src/Text/Pandoc/Readers/Djot.hs
index ecfe3e2c1..471d6a0c9 100644
--- a/src/Text/Pandoc/Readers/Djot.hs
+++ b/src/Text/Pandoc/Readers/Djot.hs
@@ -37,7 +37,6 @@ import Text.Pandoc.Logging
import Text.Pandoc.Emoji (emojiToInline)
import Control.Monad.Reader
import qualified Data.Foldable as F
-import Data.List (foldl')
import Data.ByteString (ByteString)
-- import Debug.Trace
@@ -141,7 +140,7 @@ convertBlock (D.Node pos attr bl) = addAttrToBlock pos attr <$>
(hs,bs):rs -> (hs,row:bs):rs
[] -> [([],[row])]
let reverseSnd (as,bs) = (as,reverse bs)
- let bodies = reverse $ map reverseSnd $ foldl' getBody [] rest
+ let bodies = reverse $ map reverseSnd $ F.foldl' getBody [] rest
let toCell (D.Cell _ al ils) =
Cell nullAttr (toAlign al) (RowSpan 1) (ColSpan 1)
. (\is -> [Para $ toList is]) <$> convertInlines ils
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index 8f70fe7a6..8ec14c040 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -74,7 +74,8 @@ import Control.Monad.State.Strict
import Data.Bifunctor (bimap, first)
import qualified Data.ByteString.Lazy as B
import Data.Default (Default)
-import Data.List (delete, intersect, foldl')
+import Data.List (delete, intersect)
+import qualified Data.List as L
import Data.Char (isSpace)
import qualified Data.Map as M
import qualified Data.Text as T
@@ -625,8 +626,8 @@ rowsToRows rows = do
splitHeaderRows :: Bool -> [Docx.Row] -> ([Docx.Row], [Docx.Row])
splitHeaderRows hasFirstRowFormatting rs = bimap reverse reverse $ fst
$ if hasFirstRowFormatting
- then foldl' f ((take 1 rs, []), True) (drop 1 rs)
- else foldl' f (([], []), False) rs
+ then L.foldl' f ((take 1 rs, []), True) (drop 1 rs)
+ else L.foldl' f (([], []), False) rs
where
f ((headerRows, bodyRows), previousRowWasHeader) r@(Docx.Row h cs)
| h == HasTblHeader || (previousRowWasHeader && any isContinuationCell cs)
diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs
index 23019e651..9178ab848 100644
--- a/src/Text/Pandoc/Readers/HTML.hs
+++ b/src/Text/Pandoc/Readers/HTML.hs
@@ -33,7 +33,7 @@ import Data.Char (isAlphaNum, isLetter)
import Data.Default (Default (..), def)
import Data.Foldable (for_)
import Data.List.Split (splitWhen)
-import Data.List (foldl')
+import qualified Data.List as L
import qualified Data.Map as M
import Data.Maybe (fromMaybe, isJust, isNothing)
import Data.Either (partitionEithers)
@@ -444,9 +444,9 @@ pDefListItem = try $ do
terms <- many1 (try $ skipMany nonItem >> pInTags "dt" inline)
defs <- many1 (try $ skipMany nonItem >> pInTags "dd" block)
skipMany nonItem
- let term = foldl' (\x y -> if null x
- then trimInlines y
- else x <> B.linebreak <> trimInlines y)
+ let term = L.foldl' (\x y -> if null x
+ then trimInlines y
+ else x <> B.linebreak <> trimInlines y)
mempty terms
return (term, map (fixPlains True) defs)
diff --git a/src/Text/Pandoc/Readers/HTML/Table.hs b/src/Text/Pandoc/Readers/HTML/Table.hs
index 756f857fd..b452a60ac 100644
--- a/src/Text/Pandoc/Readers/HTML/Table.hs
+++ b/src/Text/Pandoc/Readers/HTML/Table.hs
@@ -20,7 +20,7 @@ import Control.Applicative ((<|>))
import Data.Maybe (fromMaybe, isJust)
import Data.Either (lefts, rights)
import Data.List.NonEmpty (nonEmpty)
-import Data.List (foldl')
+import qualified Data.List as L
import Data.Text (Text)
import Text.HTML.TagSoup
import Text.Pandoc.Builder (Blocks)
@@ -204,9 +204,9 @@ pTableBody block = try $ do
let adjustRowHeadCols
headcolsv
(currentrow, (numheads, Row _ cells)) =
- foldl' (adjustRowHeadColsForCell currentrow) headcolsv
+ L.foldl' (adjustRowHeadColsForCell currentrow) headcolsv
(take numheads cells)
- let headcols = foldl' adjustRowHeadCols
+ let headcols = L.foldl' adjustRowHeadCols
(V.replicate numrows (0 :: Int))
(zip [(0 :: Int)..] rows)
let rowHeadCols = case V.uncons headcols of
diff --git a/src/Text/Pandoc/Readers/JATS.hs b/src/Text/Pandoc/Readers/JATS.hs
index 8f9951099..a1ea1d918 100644
--- a/src/Text/Pandoc/Readers/JATS.hs
+++ b/src/Text/Pandoc/Readers/JATS.hs
@@ -21,7 +21,7 @@ import Text.Pandoc.Error (PandocError(..))
import Data.Char (isDigit, isSpace)
import Data.Default
import Data.Generics
-import Data.List (foldl', intersperse)
+import qualified Data.List as L
import qualified Data.Map as Map
import Data.Maybe (maybeToList, fromMaybe, catMaybes)
import Data.Text (Text)
@@ -290,11 +290,11 @@ parseBlock (Elem e) = do
let items = filterChildren (named "def") e'
terms' <- mapM getInlines terms
items' <- mapM getBlocks items
- return (mconcat $ intersperse (str "; ") terms', items')
+ return (mconcat $ L.intersperse (str "; ") terms', items')
parseFigure = do
modify $ \st -> st{ jatsInFigure = True }
capt <- case filterChild (named "caption") e of
- Just t -> mconcat . intersperse linebreak <$>
+ Just t -> mconcat . L.intersperse linebreak <$>
mapM getInlines (filterChildren (const True) t)
Nothing -> return mempty
contents <- getBlocks e
@@ -350,7 +350,7 @@ parseBlock (Elem e) = do
n <- safeRead $ "0" <> T.filter (\x -> isDigit x || x == '.') w
if n > 0 then Just n else Nothing
let firstBody = fromMaybe [] (headMay multipleBodyRowElements)
- let numrows = foldl' max 0 $ map length firstBody
+ let numrows = L.foldl' max 0 $ map length firstBody
let aligns = case colspecs of
[] -> replicate numrows AlignDefault
cs -> map toAlignment cs
diff --git a/src/Text/Pandoc/Readers/LaTeX/Math.hs b/src/Text/Pandoc/Readers/LaTeX/Math.hs
index f1491656e..5685465f8 100644
--- a/src/Text/Pandoc/Readers/LaTeX/Math.hs
+++ b/src/Text/Pandoc/Readers/LaTeX/Math.hs
@@ -14,7 +14,7 @@ module Text.Pandoc.Readers.LaTeX.Math
)
where
import Data.Maybe (fromMaybe, mapMaybe, listToMaybe)
-import Data.List (foldl')
+import qualified Data.List as L
import Text.Pandoc.Walk (walk)
import Text.Pandoc.Builder as B
import qualified Data.Sequence as Seq
@@ -160,7 +160,7 @@ newtheorem inline = do
extractLabelFromBlock :: Block -> Maybe Text
extractLabelFromBlock (Para inlines) = extractLabel Nothing inlines
where
- extractLabel = foldl' go
+ extractLabel = L.foldl' go
go :: Maybe Text -> Inline -> Maybe Text
go (Just t) _ = Just t
go Nothing (Span (_, _, attrs) _) = lookup "label" attrs
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index 1ee1b801e..ad22996b4 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -24,7 +24,8 @@ import Control.Monad
import Control.Monad.Except (throwError)
import qualified Data.Bifunctor as Bifunctor
import Data.Char (isAlphaNum, isPunctuation, isSpace)
-import Data.List (transpose, elemIndex, sortOn, foldl')
+import Data.List (transpose, elemIndex, sortOn)
+import qualified Data.List as L
import qualified Data.Map as M
import Data.Maybe
import qualified Data.Set as Set
@@ -388,7 +389,7 @@ referenceKey = try $ do
addKvs <- option [] $ guardEnabled Ext_mmd_link_attributes
>> many (try $ spnl >> keyValAttr)
blanklines
- let attr' = extractIdClass $ foldl' (\x f -> f x) attr addKvs
+ let attr' = extractIdClass $ L.foldl' (\x f -> f x) attr addKvs
target = (escapeURI $ trimr src, tit)
st <- getState
let oldkeys = stateKeys st
@@ -648,7 +649,7 @@ attributes = try $ do
spnl
attrs <- many (attribute <* spnl)
char '}'
- return $ foldl' (\x f -> f x) nullAttr attrs
+ return $ L.foldl' (\x f -> f x) nullAttr attrs
attribute :: PandocMonad m => MarkdownParser m (Attr -> Attr)
attribute = identifierAttr <|> classAttr <|> keyValAttr <|> specialAttr
diff --git a/src/Text/Pandoc/Readers/ODT/Arrows/State.hs b/src/Text/Pandoc/Readers/ODT/Arrows/State.hs
index 9e695fa17..ef6986278 100644
--- a/src/Text/Pandoc/Readers/ODT/Arrows/State.hs
+++ b/src/Text/Pandoc/Readers/ODT/Arrows/State.hs
@@ -36,7 +36,6 @@ module Text.Pandoc.Readers.ODT.Arrows.State
import Control.Arrow
import qualified Control.Category as Cat
import Control.Monad
-import Data.Foldable
import Text.Pandoc.Readers.ODT.Arrows.Utils
import Text.Pandoc.Readers.ODT.Generic.Fallible
diff --git a/src/Text/Pandoc/Readers/ODT/Generic/XMLConverter.hs b/src/Text/Pandoc/Readers/ODT/Generic/XMLConverter.hs
index f5bd843ca..727ec3166 100644
--- a/src/Text/Pandoc/Readers/ODT/Generic/XMLConverter.hs
+++ b/src/Text/Pandoc/Readers/ODT/Generic/XMLConverter.hs
@@ -64,7 +64,7 @@ import qualified Data.Map as M
import Data.Text (Text)
import Data.Default
import Data.Maybe
-import Data.List (foldl')
+import qualified Data.List as L
import qualified Data.List.NonEmpty as NonEmpty
import Data.List.NonEmpty (NonEmpty(..))
@@ -298,7 +298,7 @@ readNSattributes = fromState $ \state -> maybe (state, failEmpty )
=> XMLConverterState nsID extraState
-> Maybe (XMLConverterState nsID extraState)
extractNSAttrs startState
- = foldl' (\state d -> state >>= addNS d)
+ = L.foldl' (\state d -> state >>= addNS d)
(Just startState)
nsAttribs
where nsAttribs = mapMaybe readNSattr (XML.elAttribs element)
diff --git a/src/Text/Pandoc/Readers/ODT/StyleReader.hs b/src/Text/Pandoc/Readers/ODT/StyleReader.hs
index 474303bd6..a1031d4ab 100644
--- a/src/Text/Pandoc/Readers/ODT/StyleReader.hs
+++ b/src/Text/Pandoc/Readers/ODT/StyleReader.hs
@@ -45,7 +45,7 @@ import Control.Arrow
import Data.Default
import qualified Data.Foldable as F
-import Data.List (unfoldr, foldl')
+import qualified Data.List as L
import qualified Data.Map as M
import Data.Maybe
import Data.Text (Text)
@@ -121,7 +121,7 @@ fontPitchReader = executeInSub NsOffice "font-face-decls" (
&&&
lookupDefaultingAttr NsStyle "font-pitch"
))
- >>?^ ( M.fromList . foldl' accumLegalPitches [] )
+ >>?^ ( M.fromList . L.foldl' accumLegalPitches [] )
) `ifFailedDo` returnV (Right M.empty)
where accumLegalPitches ls (Nothing,_) = ls
accumLegalPitches ls (Just n,p) = (n,p):ls
@@ -603,7 +603,7 @@ lookupListStyleByName name Styles{..} = M.lookup name listStylesByName
-- be the first element of the list, followed by its parent and so on.
-- The current style is not in the list.
parents :: Style -> Styles -> [Style]
-parents style styles = unfoldr findNextParent style -- Ha!
+parents style styles = L.unfoldr findNextParent style -- Ha!
where findNextParent Style{..}
= fmap duplicate $ (`lookupStyle` styles) =<< styleParentName
diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs
index 9c9123a47..cddd56382 100644
--- a/src/Text/Pandoc/Readers/Org/Blocks.hs
+++ b/src/Text/Pandoc/Readers/Org/Blocks.hs
@@ -38,7 +38,7 @@ import Data.Bifunctor (bimap)
import Data.Char (isSpace)
import Data.Default (Default)
import Data.Functor (($>))
-import Data.List (find, foldl')
+import qualified Data.List as L
import Data.Maybe (fromMaybe, isJust, isNothing)
import Data.Text (Text)
import Data.List.NonEmpty (nonEmpty)
@@ -130,9 +130,9 @@ blockAttributes :: PandocMonad m => OrgParser m BlockAttributes
blockAttributes = try $ do
kv <- many stringyMetaAttribute
guard $ all (isBlockAttr . fst) kv
- let caption = foldl' (appendValues "caption") Nothing kv
- let kvAttrs = foldl' (appendValues "attr_html") Nothing kv
- let name = snd <$> find ((`elem` ["name", "label"]) . fst) (reverse kv)
+ let caption = L.foldl' (appendValues "caption") Nothing kv
+ let kvAttrs = L.foldl' (appendValues "attr_html") Nothing kv
+ let name = snd <$> L.find ((`elem` ["name", "label"]) . fst) (reverse kv)
caption' <- traverse (parseFromString inlines . (<> "\n")) caption
kvAttrs' <- parseFromString keyValues . (<> "\n") $ fromMaybe mempty kvAttrs
return BlockAttributes
diff --git a/src/Text/Pandoc/Readers/RIS.hs b/src/Text/Pandoc/Readers/RIS.hs
index 66fa26506..fab266657 100644
--- a/src/Text/Pandoc/Readers/RIS.hs
+++ b/src/Text/Pandoc/Readers/RIS.hs
@@ -23,7 +23,7 @@ import Text.Pandoc.Options
import Text.Pandoc.Definition
import Text.Pandoc.Parsing
import Data.Char (isAsciiUpper, isDigit, isSpace, ord, chr)
-import Data.List (foldl')
+import qualified Data.List as L
import Citeproc (Reference(..), ItemId(..), Val(..), Date(..), DateParts(..),
toVariable)
import Text.Pandoc.Builder as B
@@ -185,7 +185,7 @@ risReferences = do
return $ fixDuplicateIds $ map risRecordToReference recs
fixDuplicateIds :: [Reference Text] -> [Reference Text]
-fixDuplicateIds = reverse . snd . foldl' go (mempty, [])
+fixDuplicateIds = reverse . snd . L.foldl' go (mempty, [])
where
go (ids_seen, refs) ref =
case M.lookup (referenceId ref) ids_seen of
diff --git a/src/Text/Pandoc/Readers/RTF.hs b/src/Text/Pandoc/Readers/RTF.hs
index b1195ac19..cb60242be 100644
--- a/src/Text/Pandoc/Readers/RTF.hs
+++ b/src/Text/Pandoc/Readers/RTF.hs
@@ -20,7 +20,7 @@ import qualified Data.Sequence as Seq
import Control.Monad
import Control.Monad.Except (throwError)
import Crypto.Hash (hashWith, SHA1(SHA1))
-import Data.List (find, foldl')
+import qualified Data.List as L
import Data.Word (Word8, Word16)
import Data.Default
import Data.Text (Text)
@@ -895,7 +895,7 @@ parseStyle (Tok _ (Grouped toks)) = do
_ -> mempty
let isBasedOn (Tok _ (ControlWord "sbasedon" (Just _))) = True
isBasedOn _ = False
- let styBasedOn = case find isBasedOn toks of
+ let styBasedOn = case L.find isBasedOn toks of
Just (Tok _ (ControlWord "sbasedon" (Just i))) -> Just i
_ -> Nothing
let isStyleControl (Tok _ (ControlWord x _)) =
@@ -920,7 +920,7 @@ hexToWord t = case TR.hexadecimal t of
handlePict :: PandocMonad m => [Tok] -> RTFParser m ()
handlePict toks = do
- let pict = foldl' getPictData def toks
+ let pict = L.foldl' getPictData def toks
let altText = "image"
let bytes =
if picBinary pict
@@ -959,7 +959,7 @@ handlePict toks = do
processFontTable :: [Tok] -> FontTable
-processFontTable = snd . foldl' go (0, mempty)
+processFontTable = snd . L.foldl' go (0, mempty)
where
go (fontnum, tbl) (Tok _ tok') =
case tok' of
@@ -972,7 +972,7 @@ processFontTable = snd . foldl' go (0, mempty)
(ControlWord "fdecor" _) -> (fontnum, IntMap.insert fontnum Decor tbl)
(ControlWord "ftech" _) -> (fontnum, IntMap.insert fontnum Tech tbl)
(ControlWord "fbidi" _) -> (fontnum, IntMap.insert fontnum Bidi tbl)
- (Grouped ts) -> foldl' go (fontnum, tbl) ts
+ (Grouped ts) -> L.foldl' go (fontnum, tbl) ts
_ -> (fontnum, tbl)
defaultAnsiWordToChar :: Word8 -> Char
diff --git a/src/Text/Pandoc/Readers/Textile.hs b/src/Text/Pandoc/Readers/Textile.hs
index f6a73d641..cbe10b327 100644
--- a/src/Text/Pandoc/Readers/Textile.hs
+++ b/src/Text/Pandoc/Readers/Textile.hs
@@ -38,7 +38,8 @@ module Text.Pandoc.Readers.Textile ( readTextile) where
import Control.Monad (guard, liftM)
import Control.Monad.Except (throwError)
import Data.Char (digitToInt, isUpper)
-import Data.List (intersperse, transpose, foldl')
+import Data.List (intersperse, transpose)
+import qualified Data.List as L
import Data.List.NonEmpty (NonEmpty(..), nonEmpty)
import qualified Data.Map as M
import Data.Text (Text)
@@ -732,7 +733,7 @@ orderedListStartAttr = do
-- | Html / CSS attributes
attributes :: PandocMonad m => TextileParser m Attr
-attributes = foldl' (flip ($)) ("",[],[]) <$>
+attributes = L.foldl' (flip ($)) ("",[],[]) <$>
try (do special <- option id specialAttribute
attrs <- many attribute
return (special : attrs))
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 657c95b71..5b3a620d3 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -91,7 +91,8 @@ import Data.Containers.ListUtils (nubOrd)
import Data.Char (isAlpha, isLower, isSpace, isUpper, toLower, isAlphaNum,
generalCategory, GeneralCategory(NonSpacingMark,
SpacingCombiningMark, EnclosingMark, ConnectorPunctuation))
-import Data.List (find, foldl', groupBy, intercalate, intersperse, union)
+import Data.List (find, groupBy, intercalate, intersperse, union)
+import qualified Data.List as L
import qualified Data.Map as M
import Data.Maybe (mapMaybe)
import Data.Monoid (Any (..) )
@@ -746,7 +747,7 @@ inDirectory path action = E.bracket
-- | Canonicalizes a file path by removing redundant @.@ and @..@.
makeCanonical :: FilePath -> FilePath
makeCanonical = Posix.joinPath . transformPathParts . splitDirectories
- where transformPathParts = reverse . foldl' go []
+ where transformPathParts = reverse . L.foldl' go []
go as "." = as
go ("..":as) ".." = ["..", ".."] <> as
go (_:as) ".." = as
@@ -762,7 +763,7 @@ makeCanonical = Posix.joinPath . transformPathParts . splitDirectories
-- > collapseFilePath "parent/foo/.." == "parent"
-- > collapseFilePath "/parent/foo/../../bar" == "/bar"
collapseFilePath :: FilePath -> FilePath
-collapseFilePath = Posix.joinPath . reverse . foldl' go [] . splitDirectories
+collapseFilePath = Posix.joinPath . reverse . L.foldl' go [] . splitDirectories
where
go rs "." = rs
go r@(p:rs) ".." = case p of
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index cdfe89879..2b4cfc5aa 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -35,7 +35,8 @@ import Control.Monad.State.Strict
import Control.Monad ( liftM, when, foldM, unless )
import Control.Monad.Trans ( MonadTrans(lift) )
import Data.Char (ord, isSpace, isAscii)
-import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
+import Data.List (intercalate, intersperse, partition, delete, (\\))
+import qualified Data.List as L
import Data.List.NonEmpty (NonEmpty((:|)))
import Data.Containers.ListUtils (nubOrd)
import Data.Maybe (fromMaybe, isJust, isNothing)
@@ -125,7 +126,7 @@ defaultWriterState = WriterState {stNotes= [],
strToHtml :: Text -> Html
strToHtml t
| T.any isSpecial t =
- let !x = foldl' go mempty $ T.groupBy samegroup t
+ let !x = L.foldl' go mempty $ T.groupBy samegroup t
in x
| otherwise = toHtml t
where
@@ -674,7 +675,7 @@ tagWithAttributes opts html5 selfClosing tagname attr =
addAttrs :: PandocMonad m
=> WriterOptions -> Attr -> Html -> StateT WriterState m Html
-addAttrs opts attr h = foldl' (!) h <$> attrsToHtml opts attr
+addAttrs opts attr h = L.foldl' (!) h <$> attrsToHtml opts attr
toAttrs :: PandocMonad m
=> [(Text, Text)] -> StateT WriterState m [Attribute]
@@ -1046,7 +1047,7 @@ blockToHtmlInner opts (OrderedList (startnum, numstyle, _) lst) = do
numstyle']
else [])
l <- ordList opts contents
- return $ foldl' (!) l attribs
+ return $ L.foldl' (!) l attribs
blockToHtmlInner opts (DefinitionList lst) = do
contents <- mapM (\(term, defs) ->
do term' <- liftM H.dt $ inlineListToHtml opts term
@@ -1413,7 +1414,7 @@ inlineToHtml opts inline = do
= Just (t . H.u, cs)
| otherwise
= Just (t, c:cs)
- spanLikeTags = foldl' go Nothing
+ spanLikeTags = L.foldl' go Nothing
in case spanLikeTags classes of
Just (tag, cs) -> do
h <- inlineListToHtml opts ils
@@ -1610,7 +1611,7 @@ inlineToHtml opts inline = do
Just "audio" -> mediaTag H5.audio "Audio"
Just _ -> (H5.embed, [])
_ -> imageTag
- return $ foldl' (!) tag $ attributes ++ specAttrs
+ return $ L.foldl' (!) tag $ attributes ++ specAttrs
-- note: null title included, as in Markdown.pl
(Note contents) -> do
notes <- gets stNotes
diff --git a/src/Text/Pandoc/Writers/LaTeX/Citation.hs b/src/Text/Pandoc/Writers/LaTeX/Citation.hs
index 1c02dafe8..bb7ddcc04 100644
--- a/src/Text/Pandoc/Writers/LaTeX/Citation.hs
+++ b/src/Text/Pandoc/Writers/LaTeX/Citation.hs
@@ -21,7 +21,7 @@ import qualified Data.Text as T
import Text.Pandoc.Options
import Text.Pandoc.Class.PandocMonad (PandocMonad)
import Text.Pandoc.Definition
-import Data.List (foldl')
+import qualified Data.List as L
import Text.DocLayout (Doc, brackets, empty, (<+>), text, isEmpty, literal,
braces)
import Text.Pandoc.Walk
@@ -73,7 +73,7 @@ citationsToNatbib inlineListToLaTeX (c:cs)
citationsToNatbib inlineListToLaTeX cits = do
cits' <- mapM convertOne cits
- return $ text "\\citetext{" <> foldl' combineTwo empty cits' <> text "}"
+ return $ text "\\citetext{" <> L.foldl' combineTwo empty cits' <> text "}"
where
citeCommand' = citeCommand inlineListToLaTeX
combineTwo a b | isEmpty a = b
@@ -182,7 +182,7 @@ citationsToBiblatex inlineListToLaTeX (c:cs)
NormalCitation -> "\\autocites"
groups <- mapM (citeArgumentsList inlineListToLaTeX)
- (reverse (foldl' grouper [] (c:cs)))
+ (reverse (L.foldl' grouper [] (c:cs)))
return $ text cmd <> mconcat groups
diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs
index 72ee05c4e..fc32479d2 100644
--- a/src/Text/Pandoc/Writers/OpenDocument.hs
+++ b/src/Text/Pandoc/Writers/OpenDocument.hs
@@ -19,7 +19,8 @@ import Control.Monad (unless, liftM)
import Control.Monad.State.Strict ( StateT(..), modify, gets, lift )
import Data.Char (chr)
import Data.Foldable (find)
-import Data.List (sortOn, sortBy, foldl')
+import Data.List (sortOn, sortBy)
+import qualified Data.List as L
import qualified Data.Map as Map
import Data.Ord (comparing, Down (Down))
import qualified Data.Set as Set
@@ -175,7 +176,7 @@ inTextStyle d = do
,("style:family", "text")]
$ selfClosingTag "style:text-properties"
(sortOn fst . Map.toList
- $ foldl' textStyleAttr mempty (Set.toList at)))
+ $ L.foldl' textStyleAttr mempty (Set.toList at)))
return $ inTags False
"text:span" [("text:style-name",styleName)] d
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
index 680b3b07c..fb564a245 100644
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -20,7 +20,8 @@ import Data.Char (isSpace, generalCategory, isAscii, isAlphaNum,
GeneralCategory(
ClosePunctuation, OpenPunctuation, InitialQuote,
FinalQuote, DashPunctuation, OtherPunctuation))
-import Data.List (transpose, intersperse, foldl')
+import Data.List (transpose, intersperse)
+import qualified Data.List as L
import qualified Data.List.NonEmpty as NE
import Data.Maybe (fromMaybe)
import qualified Data.Text as T
@@ -674,7 +675,7 @@ flatten outer
| null contents = [outer]
| otherwise = combineAll contents
where contents = dropInlineParent outer
- combineAll = foldl' combine []
+ combineAll = L.foldl' combine []
combine :: [Inline] -> Inline -> [Inline]
combine f i =
diff --git a/src/Text/Pandoc/Writers/Shared.hs b/src/Text/Pandoc/Writers/Shared.hs
index c95ba06d7..42b33a64b 100644
--- a/src/Text/Pandoc/Writers/Shared.hs
+++ b/src/Text/Pandoc/Writers/Shared.hs
@@ -63,7 +63,8 @@ import Control.Monad (MonadPlus, mzero)
import Data.Either (isRight)
import Data.Aeson (ToJSON (..), encode)
import Data.Char (chr, ord, isSpace, isLetter, isUpper)
-import Data.List (groupBy, intersperse, foldl', transpose)
+import Data.List (groupBy, intersperse, transpose)
+import qualified Data.List as L
import Data.List.NonEmpty (NonEmpty((:|)))
import Data.Text.Conversions (FromText(..))
import qualified Data.Map as M
@@ -381,7 +382,7 @@ makeDummy c =
cellTopBorder = NoLine }
addDummies :: [[RenderedCell Text]] -> [[RenderedCell Text]]
-addDummies = reverse . foldl' go []
+addDummies = reverse . L.foldl' go []
where
go [] cs = [cs]
go (prevRow:rs) cs = addDummiesToRow prevRow cs : prevRow : rs
@@ -468,7 +469,7 @@ combineBorders t1 t2 =
formatHeaderLine :: Show a => LineStyle -> [[RenderedCell a]] -> Doc Text
formatHeaderLine lineStyle rows =
- literal $ foldl'
+ literal $ L.foldl'
(\t row -> combineBorders t (render Nothing $ formatBorder (const lineStyle) True row))
mempty rows
@@ -479,7 +480,7 @@ formatBorder borderStyle alignMarkers cs =
then char '|'
else char '+'
where
- (lastBorderStyle, borderParts) = foldl' addBorder (NoLine, mempty) cs
+ (lastBorderStyle, borderParts) = L.foldl' addBorder (NoLine, mempty) cs
addBorder (prevBorderStyle, accum) c =
(borderStyle c, accum <> char junctionChar <> toBorderSection c)
where junctionChar = case (borderStyle c, prevBorderStyle) of
diff --git a/src/Text/Pandoc/Writers/Texinfo.hs b/src/Text/Pandoc/Writers/Texinfo.hs
index 755e9130c..30a311a8f 100644
--- a/src/Text/Pandoc/Writers/Texinfo.hs
+++ b/src/Text/Pandoc/Writers/Texinfo.hs
@@ -17,7 +17,8 @@ import Control.Monad.Except (throwError)
import Control.Monad.State.Strict
( StateT, MonadState(get), gets, modify, evalStateT )
import Data.Char (chr, ord, isAlphaNum)
-import Data.List (maximumBy, transpose, foldl')
+import Data.List (maximumBy, transpose)
+import qualified Data.List as L
import Data.List.NonEmpty (nonEmpty)
import Data.Ord (comparing)
import qualified Data.Map as M
@@ -347,7 +348,7 @@ tableAnyRowToTexinfo :: PandocMonad m
-> [[Block]]
-> TI m (Doc Text)
tableAnyRowToTexinfo itemtype aligns cols =
- (literal itemtype $$) . foldl' (\row item -> row $$
+ (literal itemtype $$) . L.foldl' (\row item -> row $$
(if isEmpty row then empty else text " @tab ") <> item) empty <$> zipWithM alignedBlock aligns cols
alignedBlock :: PandocMonad m