mirror of
https://github.com/jgm/pandoc.git
synced 2026-09-22 07:25:36 +00:00
Fix imports to avoid warning about foldl'.
`foldl'` is exported by Prelude by base 4.20+. So we need to do some qualified importing to avoid warnings about redundant imports.
This commit is contained in:
@@ -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.")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 "-+"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user