diff options
| -rw-r--r-- | src/Text/Pandoc/App/CommandLineOptions.hs | 5 | ||||
| -rw-r--r-- | src/Text/Pandoc/App/Opt.hs | 5 | ||||
| -rw-r--r-- | src/Text/Pandoc/Citeproc.hs | 7 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 5 | ||||
| -rw-r--r-- | src/Text/Pandoc/Shared.hs | 10 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/Docx.hs | 3 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 3 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 7 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/Ms.hs | 3 |
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)) |
