mirror of
https://github.com/jgm/pandoc.git
synced 2026-08-25 01:36:45 +00:00
First stab at mtl 2.3 compliance.
This will no doubt produce a bunch of warnings and hence CI failures, which we'll need to work around with explicit imports.
This commit is contained in:
@@ -70,6 +70,11 @@ jobs:
|
||||
cabal: '3.8'
|
||||
cabalopts: ''
|
||||
testopts: '--test-option=--hide-successes --test-option=--ansi-tricks=false'
|
||||
|
||||
- ghc: '9.4.2'
|
||||
cabal: '3.8'
|
||||
cabalopts: '--allow-newer --constrain "mtl >= 2.3.1"'
|
||||
testopts: '--test-option=--hide-successes --test-option=--ansi-tricks=false'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
|
||||
+3
-3
@@ -496,7 +496,7 @@ library
|
||||
ipynb >= 0.2 && < 0.3,
|
||||
jira-wiki-markup >= 1.4 && < 1.5,
|
||||
mime-types >= 0.1.1 && < 0.2,
|
||||
mtl >= 2.2 && < 2.3,
|
||||
mtl >= 2.2 && < 2.4,
|
||||
network >= 2.6,
|
||||
network-uri >= 2.6 && < 2.8,
|
||||
pandoc-types >= 1.22.2 && < 1.23,
|
||||
@@ -750,7 +750,7 @@ test-suite test-pandoc
|
||||
directory >= 1.2.3 && < 1.4,
|
||||
doctemplates >= 0.10 && < 0.11,
|
||||
filepath >= 1.1 && < 1.5,
|
||||
mtl >= 2.2 && < 2.3,
|
||||
mtl >= 2.2 && < 2.4,
|
||||
pandoc-types >= 1.22.2 && < 1.23,
|
||||
process >= 1.2.3 && < 1.7,
|
||||
tasty >= 0.11 && < 1.5,
|
||||
@@ -824,7 +824,7 @@ benchmark benchmark-pandoc
|
||||
hs-source-dirs: benchmark
|
||||
build-depends: bytestring,
|
||||
tasty-bench >= 0.2 && <= 0.4,
|
||||
mtl >= 2.2 && < 2.3,
|
||||
mtl >= 2.2 && < 2.4,
|
||||
text >= 1.1.1.0 && < 2.1,
|
||||
deepseq
|
||||
-- we increase heap size to avoid benchmarking garbage collection:
|
||||
|
||||
@@ -25,7 +25,9 @@ module Text.Pandoc.App.Opt (
|
||||
, applyDefaults
|
||||
, fullDefaultsPath
|
||||
) where
|
||||
import Control.Monad.Except (MonadIO, liftIO, throwError, (>=>), foldM)
|
||||
import Control.Monad.Except (throwError)
|
||||
import Control.Monad.Trans (MonadIO, liftIO)
|
||||
import Control.Monad ((>=>), foldM)
|
||||
import Control.Monad.State.Strict (StateT, modify, gets)
|
||||
import System.FilePath ( addExtension, (</>), takeExtension, takeDirectory )
|
||||
import System.Directory ( canonicalizePath )
|
||||
|
||||
@@ -46,7 +46,8 @@ import qualified Data.Map as Map
|
||||
import Data.Maybe
|
||||
import Text.Pandoc.Parsing hiding ((<|>), many)
|
||||
import Control.Applicative
|
||||
import Control.Monad.RWS hiding ((<>))
|
||||
import Control.Monad ( guard, MonadPlus(..), void )
|
||||
import Control.Monad.RWS ( asks, RWST, gets, modify, evalRWST )
|
||||
import qualified Data.Sequence as Seq
|
||||
import Data.Char (isAlphaNum, isDigit, isLetter,
|
||||
isUpper, toLower, toUpper,
|
||||
|
||||
@@ -29,7 +29,6 @@ import Citeproc.Pandoc ()
|
||||
import Text.Pandoc.Citeproc.Util (splitStrWhen)
|
||||
import qualified Data.Text as T
|
||||
import Data.List.Split (splitWhen, wordsBy)
|
||||
import Control.Monad.RWS hiding ((<>))
|
||||
import Data.Char (isUpper, isDigit)
|
||||
import Data.List (foldl')
|
||||
|
||||
@@ -59,7 +58,7 @@ data NameOpts =
|
||||
|
||||
-- | Parse a list of 'Inline's into a citeproc 'Name', identifying
|
||||
-- first and last name, particles, suffixes.
|
||||
toName :: MonadPlus m => NameOpts -> [Inline] -> m Name
|
||||
toName :: Monad m => NameOpts -> [Inline] -> m Name
|
||||
toName _ [Str "others"] =
|
||||
return emptyName{ nameLiteral = Just "others" }
|
||||
toName _ [Span ("",[],[]) ils] = -- corporate author
|
||||
|
||||
@@ -54,8 +54,9 @@ module Text.Pandoc.Class.PandocMonad
|
||||
, checkUserDataDir
|
||||
) where
|
||||
|
||||
import Control.Monad.Except (MonadError (catchError, throwError),
|
||||
MonadTrans, lift, when)
|
||||
import Control.Monad.Except (MonadError (catchError, throwError))
|
||||
import Control.Monad.Trans (MonadTrans, lift)
|
||||
import Control.Monad (when)
|
||||
import Data.Time (UTCTime)
|
||||
import Data.Time.Clock.POSIX (POSIXTime, utcTimeToPOSIXSeconds,
|
||||
posixSecondsToUTCTime)
|
||||
|
||||
@@ -31,6 +31,7 @@ module Text.Pandoc.Class.PandocPure
|
||||
import Codec.Archive.Zip
|
||||
import Control.Monad.Except
|
||||
import Control.Monad.State.Strict
|
||||
import Control.Monad (foldM)
|
||||
import Data.Default
|
||||
import Data.Text (Text)
|
||||
import Data.Time (UTCTime)
|
||||
|
||||
@@ -67,9 +67,10 @@ import Control.Monad
|
||||
, unless
|
||||
, void
|
||||
, when
|
||||
, MonadPlus(mzero)
|
||||
)
|
||||
import Control.Monad.Except ( MonadError(throwError) )
|
||||
import Control.Monad.Identity ( Identity(..), MonadPlus(mzero) )
|
||||
import Control.Monad.Identity ( Identity(..) )
|
||||
import Data.Char
|
||||
( chr
|
||||
, isAlphaNum
|
||||
|
||||
@@ -26,6 +26,7 @@ import Text.Pandoc.Definition
|
||||
import Text.Pandoc.Builder as B
|
||||
import Text.Pandoc.Options
|
||||
import Text.Pandoc.Readers.Metadata (yamlMetaBlock)
|
||||
import Control.Monad (MonadPlus(mzero))
|
||||
import Control.Monad.Except
|
||||
import Data.Functor.Identity (runIdentity)
|
||||
import Data.Typeable
|
||||
|
||||
@@ -13,7 +13,8 @@ Conversion of creole text to 'Pandoc' document.
|
||||
module Text.Pandoc.Readers.Creole ( readCreole
|
||||
) where
|
||||
|
||||
import Control.Monad.Except (guard, liftM2, throwError)
|
||||
import Control.Monad
|
||||
import Control.Monad.Except (throwError)
|
||||
import qualified Data.Foldable as F
|
||||
import Data.Maybe (fromMaybe)
|
||||
import Data.Text (Text)
|
||||
|
||||
@@ -13,7 +13,13 @@
|
||||
Conversion of DocBook XML to 'Pandoc' document.
|
||||
-}
|
||||
module Text.Pandoc.Readers.DocBook ( readDocBook ) where
|
||||
import Control.Monad (MonadPlus(mplus))
|
||||
import Control.Monad.State.Strict
|
||||
( MonadTrans(lift),
|
||||
StateT(runStateT),
|
||||
MonadState(get),
|
||||
gets,
|
||||
modify )
|
||||
import Data.ByteString (ByteString)
|
||||
import Data.FileEmbed
|
||||
import Data.Char (isSpace, isLetter, chr)
|
||||
|
||||
@@ -59,6 +59,7 @@ module Text.Pandoc.Readers.Docx
|
||||
) where
|
||||
|
||||
import Codec.Archive.Zip
|
||||
import Control.Monad ( liftM, unless )
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Bifunctor (bimap, first)
|
||||
|
||||
@@ -60,6 +60,7 @@ module Text.Pandoc.Readers.Docx.Parse ( Docx(..)
|
||||
import Text.Pandoc.Readers.Docx.Parse.Styles
|
||||
import Codec.Archive.Zip
|
||||
import Control.Applicative ((<|>))
|
||||
import Control.Monad
|
||||
import Control.Monad.Except
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State.Strict
|
||||
|
||||
@@ -14,7 +14,8 @@ Conversion of JATS XML to 'Pandoc' document.
|
||||
-}
|
||||
|
||||
module Text.Pandoc.Readers.JATS ( readJATS ) where
|
||||
import Control.Monad.State.Strict
|
||||
import Control.Monad.State.Strict ( StateT(runStateT), gets, modify )
|
||||
import Control.Monad (forM_, when, unless, MonadPlus(mplus))
|
||||
import Control.Monad.Except (throwError)
|
||||
import Text.Pandoc.Error (PandocError(..))
|
||||
import Data.Char (isDigit, isSpace)
|
||||
|
||||
@@ -42,7 +42,6 @@ module Text.Pandoc.Writers.AnnotatedTable
|
||||
where
|
||||
|
||||
import Control.Monad.RWS.Strict
|
||||
hiding ( (<>) )
|
||||
import Data.Generics ( Data
|
||||
, Typeable
|
||||
)
|
||||
|
||||
@@ -19,6 +19,7 @@ that it has omitted the construct.
|
||||
AsciiDoc: <http://www.methods.co.nz/asciidoc/>
|
||||
-}
|
||||
module Text.Pandoc.Writers.AsciiDoc (writeAsciiDoc, writeAsciiDoctor) where
|
||||
import Control.Monad (foldM)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Char (isPunctuation, isSpace)
|
||||
import Data.List (delete, intercalate, intersperse)
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
Conversion of 'Pandoc' format into ConTeXt.
|
||||
-}
|
||||
module Text.Pandoc.Writers.ConTeXt ( writeConTeXt ) where
|
||||
import Control.Monad (liftM)
|
||||
import Control.Monad.State.Strict
|
||||
( StateT, MonadState(put, get), gets, modify, evalStateT )
|
||||
import Data.Char (ord, isDigit)
|
||||
import Data.List (intersperse)
|
||||
import Data.List.NonEmpty (NonEmpty ((:|)))
|
||||
|
||||
@@ -19,6 +19,7 @@ Conversion of 'Pandoc' documents to docx.
|
||||
module Text.Pandoc.Writers.Docx ( writeDocx ) where
|
||||
import Codec.Archive.Zip
|
||||
import Control.Applicative ((<|>))
|
||||
import Control.Monad (MonadPlus(mplus), unless, when)
|
||||
import Control.Monad.Except (catchError, throwError)
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State.Strict
|
||||
|
||||
@@ -13,7 +13,8 @@ module Text.Pandoc.Writers.Docx.Table
|
||||
( tableToOpenXML
|
||||
) where
|
||||
|
||||
import Control.Monad.State.Strict ( modify, gets, unless )
|
||||
import Control.Monad.State.Strict ( modify, gets )
|
||||
import Control.Monad ( unless )
|
||||
import Data.Array ( elems, (!), assocs, indices )
|
||||
import Data.Text (Text)
|
||||
import Text.Pandoc.Definition
|
||||
|
||||
@@ -18,9 +18,9 @@ FictionBook is an XML-based e-book format. For more information see:
|
||||
-}
|
||||
module Text.Pandoc.Writers.FB2 (writeFB2) where
|
||||
|
||||
import Control.Monad (zipWithM)
|
||||
import Control.Monad (zipWithM, liftM)
|
||||
import Control.Monad.Except (catchError, throwError)
|
||||
import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, liftM, modify)
|
||||
import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, modify)
|
||||
import Data.ByteString.Base64 (encodeBase64)
|
||||
import Data.Char (isAscii, isControl, isSpace)
|
||||
import Data.Either (lefts, rights)
|
||||
|
||||
@@ -30,6 +30,9 @@ module Text.Pandoc.Writers.HTML (
|
||||
tagWithAttributes
|
||||
) where
|
||||
import Control.Monad.State.Strict
|
||||
( StateT, MonadState(get), gets, modify, evalStateT )
|
||||
import Control.Monad ( liftM, when, foldM, unless )
|
||||
import Control.Monad.Trans ( MonadTrans(lift) )
|
||||
import Data.Char (ord)
|
||||
import Data.List (intercalate, intersperse, partition, delete, (\\), foldl')
|
||||
import Data.List.NonEmpty (NonEmpty((:|)))
|
||||
|
||||
@@ -14,6 +14,7 @@ Conversion of 'Pandoc' documents to haddock markup.
|
||||
Haddock: <http://www.haskell.org/haddock/doc/html/>
|
||||
-}
|
||||
module Text.Pandoc.Writers.Haddock (writeHaddock) where
|
||||
import Control.Monad (zipWithM)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Char (isAlphaNum)
|
||||
import Data.Default
|
||||
|
||||
@@ -17,6 +17,7 @@ into InDesign with File -> Place.
|
||||
-}
|
||||
module Text.Pandoc.Writers.ICML (writeICML) where
|
||||
import Control.Monad.Except (catchError)
|
||||
import Control.Monad (liftM2)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.List (intersperse)
|
||||
import Data.Maybe (fromMaybe, maybeToList)
|
||||
|
||||
@@ -14,6 +14,7 @@ Ipynb (Jupyter notebook JSON format) writer for pandoc.
|
||||
-}
|
||||
module Text.Pandoc.Writers.Ipynb ( writeIpynb )
|
||||
where
|
||||
import Control.Monad (foldM)
|
||||
import Control.Monad.State
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe (catMaybes, fromMaybe)
|
||||
|
||||
@@ -22,6 +22,7 @@ module Text.Pandoc.Writers.JATS
|
||||
, writeJatsArticleAuthoring
|
||||
) where
|
||||
import Control.Applicative ((<|>))
|
||||
import Control.Monad
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State
|
||||
import Data.Generics (everywhere, mkT)
|
||||
|
||||
@@ -20,6 +20,15 @@ module Text.Pandoc.Writers.LaTeX (
|
||||
, writeBeamer
|
||||
) where
|
||||
import Control.Monad.State.Strict
|
||||
( MonadState(get, put),
|
||||
gets,
|
||||
modify,
|
||||
evalStateT )
|
||||
import Control.Monad
|
||||
( MonadPlus(mplus),
|
||||
liftM,
|
||||
when,
|
||||
unless )
|
||||
import Data.Containers.ListUtils (nubOrd)
|
||||
import Data.Char (isDigit)
|
||||
import Data.List (intersperse, (\\))
|
||||
|
||||
@@ -15,6 +15,7 @@ module Text.Pandoc.Writers.LaTeX.Table
|
||||
( tableToLaTeX
|
||||
) where
|
||||
import Control.Monad.State.Strict
|
||||
import Control.Monad (when)
|
||||
import Data.List (intersperse)
|
||||
import qualified Data.List.NonEmpty as NonEmpty
|
||||
import Data.List.NonEmpty (NonEmpty ((:|)))
|
||||
|
||||
@@ -14,7 +14,9 @@ Conversion of 'Pandoc' documents to roff man page format.
|
||||
|
||||
-}
|
||||
module Text.Pandoc.Writers.Man ( writeMan ) where
|
||||
import Control.Monad.State.Strict
|
||||
import Control.Monad ( liftM, zipWithM, forM )
|
||||
import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
|
||||
import Control.Monad.Trans (MonadTrans(lift))
|
||||
import Data.List (intersperse)
|
||||
import Data.List.NonEmpty (nonEmpty)
|
||||
import Data.Maybe (fromMaybe)
|
||||
|
||||
@@ -21,6 +21,7 @@ module Text.Pandoc.Writers.Markdown (
|
||||
writeCommonMark,
|
||||
writeMarkua,
|
||||
writePlain) where
|
||||
import Control.Monad (foldM, zipWithM, MonadPlus(..), when)
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Default
|
||||
|
||||
@@ -16,6 +16,7 @@ module Text.Pandoc.Writers.Markdown.Inline (
|
||||
attrsToMarkdown,
|
||||
attrsToMarkua
|
||||
) where
|
||||
import Control.Monad (when, liftM2)
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Char (isAlphaNum, isDigit)
|
||||
|
||||
@@ -21,6 +21,8 @@ TODO:
|
||||
|
||||
module Text.Pandoc.Writers.Ms ( writeMs ) where
|
||||
import Control.Monad.State.Strict
|
||||
( gets, modify, evalStateT )
|
||||
import Control.Monad ( MonadPlus(mplus), liftM, unless, forM )
|
||||
import Data.Containers.ListUtils (nubOrd)
|
||||
import Data.Char (isAscii, isLower, isUpper, ord)
|
||||
import Data.List (intercalate, intersperse)
|
||||
|
||||
@@ -25,6 +25,7 @@ However, @\<literal style="html">@ tag is used for HTML raw blocks
|
||||
even though it is supported only in Emacs Muse.
|
||||
-}
|
||||
module Text.Pandoc.Writers.Muse (writeMuse) where
|
||||
import Control.Monad (zipWithM)
|
||||
import Control.Monad.Except (throwError)
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State.Strict
|
||||
|
||||
@@ -13,6 +13,7 @@ Conversion of 'Pandoc' documents to ODT.
|
||||
-}
|
||||
module Text.Pandoc.Writers.ODT ( writeODT ) where
|
||||
import Codec.Archive.Zip
|
||||
import Control.Monad
|
||||
import Control.Monad.Except (catchError, throwError)
|
||||
import Control.Monad.State.Strict
|
||||
import qualified Data.ByteString.Lazy as B
|
||||
|
||||
@@ -24,7 +24,7 @@ module Text.Pandoc.Writers.OOXML ( mknode
|
||||
) where
|
||||
|
||||
import Codec.Archive.Zip
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad (mplus)
|
||||
import Control.Monad.Except (throwError)
|
||||
import Text.Pandoc.Error
|
||||
import qualified Data.ByteString as B
|
||||
|
||||
@@ -15,7 +15,8 @@ Conversion of 'Pandoc' documents to OpenDocument XML.
|
||||
-}
|
||||
module Text.Pandoc.Writers.OpenDocument ( writeOpenDocument ) where
|
||||
import Control.Arrow ((***), (>>>))
|
||||
import Control.Monad.State.Strict hiding (when)
|
||||
import Control.Monad hiding (when)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Char (chr)
|
||||
import Data.Foldable (find)
|
||||
import Data.List (sortOn, sortBy, foldl')
|
||||
|
||||
@@ -16,6 +16,7 @@ Conversion of 'Pandoc' documents to Emacs Org-Mode.
|
||||
Org-Mode: <http://orgmode.org>
|
||||
-}
|
||||
module Text.Pandoc.Writers.Org (writeOrg) where
|
||||
import Control.Monad (zipWithM)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Char (isAlphaNum, isDigit)
|
||||
import Data.List (intersperse, partition, transpose)
|
||||
|
||||
@@ -21,6 +21,7 @@ Text.Pandoc.Writers.Powerpoint.Presentation) to a zip archive.
|
||||
module Text.Pandoc.Writers.Powerpoint.Output ( presentationToArchive
|
||||
) where
|
||||
|
||||
import Control.Monad ( MonadPlus(mplus), foldM, unless )
|
||||
import Control.Monad.Except (throwError, catchError)
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State
|
||||
|
||||
@@ -43,7 +43,7 @@ module Text.Pandoc.Writers.Powerpoint.Presentation ( documentToPresentation
|
||||
, LinkTarget(..)
|
||||
) where
|
||||
|
||||
|
||||
import Control.Monad
|
||||
import Control.Monad.Reader
|
||||
import Control.Monad.State
|
||||
import Data.List (intercalate)
|
||||
|
||||
@@ -14,7 +14,8 @@ Conversion of 'Pandoc' documents to reStructuredText.
|
||||
reStructuredText: <http://docutils.sourceforge.net/rst.html>
|
||||
-}
|
||||
module Text.Pandoc.Writers.RST ( writeRST, flatten ) where
|
||||
import Control.Monad.State.Strict
|
||||
import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
|
||||
import Control.Monad (zipWithM, liftM)
|
||||
import Data.Char (isSpace, generalCategory, isAscii, isAlphaNum,
|
||||
GeneralCategory(
|
||||
ClosePunctuation, OpenPunctuation, InitialQuote,
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
Conversion of 'Pandoc' format into Texinfo.
|
||||
-}
|
||||
module Text.Pandoc.Writers.Texinfo ( writeTexinfo ) where
|
||||
import Control.Monad (zipWithM)
|
||||
import Control.Monad.Except (throwError)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Char (chr, ord, isAlphaNum)
|
||||
|
||||
@@ -13,7 +13,8 @@ Conversion of 'Pandoc' documents to Textile markup.
|
||||
Textile: <http://thresholdstate.com/articles/4312/the-textile-reference-manual>
|
||||
-}
|
||||
module Text.Pandoc.Writers.Textile ( writeTextile ) where
|
||||
import Control.Monad.State.Strict
|
||||
import Control.Monad (zipWithM, liftM)
|
||||
import Control.Monad.State.Strict ( StateT, gets, modify, evalStateT )
|
||||
import Data.Char (isSpace)
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
|
||||
Reference in New Issue
Block a user