summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/App/CommandLineOptions.hs5
-rw-r--r--src/Text/Pandoc/App/Opt.hs5
-rw-r--r--src/Text/Pandoc/Citeproc.hs7
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs5
-rw-r--r--src/Text/Pandoc/Shared.hs10
-rw-r--r--src/Text/Pandoc/Writers/Docx.hs3
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs3
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs7
-rw-r--r--src/Text/Pandoc/Writers/Ms.hs3
9 files changed, 25 insertions, 23 deletions
diff --git a/src/Text/Pandoc/App/CommandLineOptions.hs b/src/Text/Pandoc/App/CommandLineOptions.hs
index 771569f9b..b57a16fc6 100644
--- a/src/Text/Pandoc/App/CommandLineOptions.hs
+++ b/src/Text/Pandoc/App/CommandLineOptions.hs
@@ -25,6 +25,7 @@ module Text.Pandoc.App.CommandLineOptions (
import Control.Monad
import Control.Monad.Trans
import Control.Monad.State.Strict
+import Data.Containers.ListUtils (nubOrd)
import Data.Aeson.Encode.Pretty (encodePretty', Config(..), keyOrder,
defConfig, Indent(..), NumberFormat(..))
import Data.Bifunctor (second)
@@ -50,7 +51,7 @@ import Text.Pandoc.App.Opt (Opt (..), LineEnding (..), IpynbOutput (..),
fullDefaultsPath)
import Text.Pandoc.Filter (Filter (..))
import Text.Pandoc.Highlighting (highlightingStyles, lookupHighlightingStyle)
-import Text.Pandoc.Shared (ordNub, safeStrRead)
+import Text.Pandoc.Shared (safeStrRead)
import Text.Printf
import qualified Control.Exception as E
import qualified Data.ByteString as BS
@@ -115,7 +116,7 @@ engines = map ("html",) htmlEngines ++
]
pdfEngines :: [String]
-pdfEngines = ordNub $ map snd engines
+pdfEngines = nubOrd $ map snd engines
-- | A list of functions, each transforming the options data structure
-- in response to a command-line option.
diff --git a/src/Text/Pandoc/App/Opt.hs b/src/Text/Pandoc/App/Opt.hs
index 9ecf7e7ae..710df3200 100644
--- a/src/Text/Pandoc/App/Opt.hs
+++ b/src/Text/Pandoc/App/Opt.hs
@@ -43,7 +43,8 @@ import Text.Pandoc.Options (TopLevelDivision (TopLevelDefault),
import Text.Pandoc.Class (readFileStrict, fileExists, setVerbosity, report,
PandocMonad(lookupEnv), getUserDataDir)
import Text.Pandoc.Error (PandocError (PandocParseError, PandocSomeError))
-import Text.Pandoc.Shared (findM, ordNub)
+import Text.Pandoc.Shared (findM)
+import Data.Containers.ListUtils (nubOrd)
import Text.Pandoc.Data (defaultUserDataDir)
import qualified Text.Pandoc.Parsing as P
import Text.Pandoc.Readers.Metadata (yamlMap)
@@ -816,4 +817,4 @@ expand ps ns n = concatMap (ext n ns) ps
cyclic :: Ord a => [[a]] -> Bool
cyclic = any hasDuplicate
where
- hasDuplicate xs = length (ordNub xs) /= length xs
+ hasDuplicate xs = length (nubOrd xs) /= length xs
diff --git a/src/Text/Pandoc/Citeproc.hs b/src/Text/Pandoc/Citeproc.hs
index 082d79553..4830c4ef0 100644
--- a/src/Text/Pandoc/Citeproc.hs
+++ b/src/Text/Pandoc/Citeproc.hs
@@ -30,7 +30,8 @@ import Text.Pandoc.Error (PandocError(..))
import Text.Pandoc.Extensions (pandocExtensions)
import Text.Pandoc.Logging (LogMessage(..))
import Text.Pandoc.Options (ReaderOptions(..))
-import Text.Pandoc.Shared (stringify, ordNub, tshow)
+import Text.Pandoc.Shared (stringify, tshow)
+import Data.Containers.ListUtils (nubOrd)
import qualified Text.Pandoc.UTF8 as UTF8
import Text.Pandoc.Walk (query, walk, walkM)
import Control.Applicative ((<|>))
@@ -501,8 +502,8 @@ insertRefs refkvs refclasses refs (Pandoc meta bs) =
go (Div ("refs",cs,kvs) xs) = do
put True
-- refHeader isn't used if you have an explicit references div
- let cs' = ordNub $ cs ++ refclasses
- let kvs' = ordNub $ kvs ++ refkvs
+ let cs' = nubOrd $ cs ++ refclasses
+ let kvs' = nubOrd $ kvs ++ refkvs
return $ Div ("refs",cs',kvs') (xs ++ refs)
go x = return x
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 530fe8f2a..b12e65eaf 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -24,6 +24,7 @@ module Text.Pandoc.Readers.LaTeX ( readLaTeX,
import Control.Applicative (many, optional, (<|>))
import Control.Monad
import Control.Monad.Except (throwError)
+import Data.Containers.ListUtils (nubOrd)
import Data.Char (isDigit, isLetter, isAlphaNum, toUpper, chr)
import Data.Default
import Data.List (intercalate)
@@ -301,7 +302,7 @@ inlineCommand' = try $ do
else pure ""
overlay <- option "" overlaySpecification
let name' = name <> star <> overlay
- let names = ordNub [name', name] -- check non-starred as fallback
+ let names = nubOrd [name', name] -- check non-starred as fallback
let raw = do
guard $ isInlineCommand name || not (isBlockCommand name)
rawcommand <- getRawCommand name (cmd <> star)
@@ -840,7 +841,7 @@ blockCommand = try $ do
guard $ name /= "begin" && name /= "end" && name /= "and"
star <- option "" ("*" <$ symbol '*' <* sp)
let name' = name <> star
- let names = ordNub [name', name]
+ let names = nubOrd [name', name]
let rawDefiniteBlock = do
guard $ isBlockCommand name
rawcontents <- getRawCommand name (txt <> star)
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index dbe547325..bab14d25c 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -22,7 +22,6 @@ module Text.Pandoc.Shared (
splitBy,
splitTextBy,
splitTextByIndices,
- ordNub,
findM,
-- * Text processing
inquotes,
@@ -89,10 +88,10 @@ import qualified Control.Exception as E
import Control.Monad (MonadPlus (..), msum, unless)
import qualified Control.Monad.State.Strict as S
import qualified Data.ByteString.Lazy as BL
+import Data.Containers.ListUtils (nubOrd)
import Data.Char (isAlpha, isLower, isSpace, isUpper, toLower, isAlphaNum,
generalCategory, GeneralCategory(NonSpacingMark,
SpacingCombiningMark, EnclosingMark, ConnectorPunctuation))
-import Data.Containers.ListUtils (nubOrd)
import Data.List (find, intercalate, intersperse, sortOn, foldl', groupBy)
import qualified Data.Map as M
import Data.Maybe (mapMaybe, fromMaybe)
@@ -155,11 +154,6 @@ splitAt' n xs | n <= 0 = ([],xs)
splitAt' n (x:xs) = (x:ys,zs)
where (ys,zs) = splitAt' (n - charWidth x) xs
--- | Remove duplicates from a list.
-ordNub :: (Ord a) => [a] -> [a]
-ordNub = nubOrd
-{-# INLINE ordNub #-}
-
-- | Returns the first element in a foldable structure for that the
-- monadic predicate holds true, and @Nothing@ if no such element
-- exists.
@@ -555,7 +549,7 @@ makeSections numbering mbBaseLevel bs =
combineAttr :: Attr -> Attr -> Attr
combineAttr (id1, classes1, kvs1) (id2, classes2, kvs2) =
(if T.null id1 then id2 else id1,
- ordNub (classes1 ++ classes2),
+ nubOrd (classes1 ++ classes2),
foldr (\(k,v) kvs -> case lookup k kvs of
Nothing -> (k,v):kvs
Just _ -> kvs) mempty (kvs1 ++ kvs2))
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs
index bd01cb4a2..955f85f85 100644
--- a/src/Text/Pandoc/Writers/Docx.hs
+++ b/src/Text/Pandoc/Writers/Docx.hs
@@ -23,6 +23,7 @@ import Control.Monad.Except (catchError, throwError)
import Control.Monad.Reader
import Control.Monad.State.Strict
import qualified Data.ByteString.Lazy as BL
+import Data.Containers.ListUtils (nubOrd)
import Data.Char (isSpace, isLetter)
import Data.List (intercalate, isPrefixOf, isSuffixOf)
import Data.String (fromString)
@@ -633,7 +634,7 @@ baseListId = 1000
mkNumbering :: [ListMarker] -> [Element]
mkNumbering lists =
elts ++ zipWith mkNum lists [baseListId..(baseListId + length lists - 1)]
- where elts = map mkAbstractNum (ordNub lists)
+ where elts = map mkAbstractNum (nubOrd lists)
maxListLevel :: Int
maxListLevel = 8
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index 22f5b1368..aafc52248 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -33,6 +33,7 @@ import Control.Monad.State.Strict
import Data.Char (ord)
import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
import Data.List.NonEmpty (NonEmpty((:|)))
+import Data.Containers.ListUtils (nubOrd)
import Data.Maybe (fromMaybe, isJust, isNothing)
import qualified Data.Set as Set
import Data.Text (Text)
@@ -829,7 +830,7 @@ blockToHtmlInner opts (Div (ident, "section":dclasses, dkvs)
res <- blockListToHtml opts innerSecs
modify $ \st -> st{ stInSection = inSection }
return res
- let classes' = ordNub $
+ let classes' = nubOrd $
["title-slide" | titleSlide] ++ ["slide" | slide] ++
["section" | (slide || writerSectionDivs opts) &&
not html5 ] ++
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index 439d59dd5..3c5fe9c47 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -20,6 +20,7 @@ module Text.Pandoc.Writers.LaTeX (
, writeBeamer
) where
import Control.Monad.State.Strict
+import Data.Containers.ListUtils (nubOrd)
import Data.Char (isDigit)
import Data.List (intersperse, (\\))
import Data.Maybe (catMaybes, fromMaybe, isJust, mapMaybe, isNothing)
@@ -124,7 +125,7 @@ pandocToLaTeX options (Pandoc meta blocks) = do
titleMeta <- stringToLaTeX TextString $ stringify $ docTitle meta
authorsMeta <- mapM (stringToLaTeX TextString . stringify) $ docAuthors meta
docLangs <- catMaybes <$>
- mapM (toLang . Just) (ordNub (query (extract "lang") blocks))
+ mapM (toLang . Just) (nubOrd (query (extract "lang") blocks))
let hasStringValue x = isJust (getField x metadata :: Maybe (Doc Text))
let geometryFromMargins = mconcat $ intersperse ("," :: Doc Text) $
mapMaybe (\(x,y) ->
@@ -284,8 +285,8 @@ blockToLaTeX (Div (identifier,"slide":dclasses,dkvs)
hasCodeBlock _ = []
let hasCode (Code _ _) = [True]
hasCode _ = []
- let classes = ordNub $ dclasses ++ hclasses
- let kvs = ordNub $ dkvs ++ hkvs
+ let classes = nubOrd $ dclasses ++ hclasses
+ let kvs = nubOrd $ dkvs ++ hkvs
let fragile = "fragile" `elem` classes ||
not (null $ query hasCodeBlock bs ++ query hasCode bs)
let frameoptions = ["allowdisplaybreaks", "allowframebreaks", "fragile",
diff --git a/src/Text/Pandoc/Writers/Ms.hs b/src/Text/Pandoc/Writers/Ms.hs
index ceff1697f..023524601 100644
--- a/src/Text/Pandoc/Writers/Ms.hs
+++ b/src/Text/Pandoc/Writers/Ms.hs
@@ -21,6 +21,7 @@ TODO:
module Text.Pandoc.Writers.Ms ( writeMs ) where
import Control.Monad.State.Strict
+import Data.Containers.ListUtils (nubOrd)
import Data.Char (isAscii, isLower, isUpper, ord)
import Data.List (intercalate, intersperse)
import Data.List.NonEmpty (nonEmpty)
@@ -566,7 +567,7 @@ styleToMs sty = vcat $ colordefs <> map (toMacro sty) alltoktypes
colordefs = map toColorDef allcolors
toColorDef c = literal (".defcolor " <>
hexColor c <> " rgb #" <> hexColor c)
- allcolors = catMaybes $ ordNub $
+ allcolors = catMaybes $ nubOrd $
[defaultColor sty, backgroundColor sty,
lineNumberColor sty, lineNumberBackgroundColor sty] <>
concatMap (colorsForToken. snd) (Map.toList (tokenStyles sty))