@@ -1,5 +1,6 @@
11{-# LANGUAGE DeriveFunctor, DeriveDataTypeable, TypeSynonymInstances,
2−FlexibleInstances, GeneralizedNewtypeDeriving, FlexibleContexts #-}
2+FlexibleInstances, GeneralizedNewtypeDeriving, FlexibleContexts,
3+MultiParamTypeClasses, UndecidableInstances #-}
34
45{-
56Copyright (C) 2016 Jesse Rosenthal <jrosenthal@jhu.edu>
@@ -91,6 +92,9 @@ import System.FilePath ((</>))
9192import qualified System.FilePath.Glob as IO (glob)
9293import qualified System.Directory as IO (getModificationTime)
9394import Control.Monad.State hiding (fail)
95+import Control.Monad.Reader (ReaderT)
96+import Control.Monad.Writer (WriterT)
97+import Control.Monad.RWS (RWST)
9498import Control.Monad.Except hiding (fail)
9599import Data.Word (Word8)
96100import Data.Default
@@ -98,7 +102,8 @@ import System.IO.Error
98102import qualified Data.Map as M
99103import Text.Pandoc.Error
100104
101−class (Functor m, Applicative m, Monad m, MonadError PandocError m) => PandocMonad m where
105+class (Functor m, Applicative m, Monad m, MonadError PandocError m)
106+ => PandocMonad m where
102107 lookupEnv :: String -> m (Maybe String)
103108 getCurrentTime :: m UTCTime
104109 getCurrentTimeZone :: m TimeZone
@@ -400,3 +405,75 @@ instance PandocMonad m => PandocMonad (ParserT s st m) where
400405 getCommonState = lift getCommonState
401406 putCommonState = lift . putCommonState
402407
408+instance PandocMonad m => PandocMonad (ReaderT r m) where
409+ lookupEnv = lift . lookupEnv
410+ getCurrentTime = lift getCurrentTime
411+ getCurrentTimeZone = lift getCurrentTimeZone
412+ getDefaultReferenceDocx = lift . getDefaultReferenceDocx
413+ getDefaultReferenceODT = lift . getDefaultReferenceODT
414+ newStdGen = lift newStdGen
415+ newUniqueHash = lift newUniqueHash
416+ readFileLazy = lift . readFileLazy
417+ readDataFile mbuserdir = lift . readDataFile mbuserdir
418+ fail = lift . fail
419+ fetchItem media = lift . fetchItem media
420+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
421+ glob = lift . glob
422+ getModificationTime = lift . getModificationTime
423+ getCommonState = lift getCommonState
424+ putCommonState = lift . putCommonState
425+
426+instance (PandocMonad m, Monoid w) => PandocMonad (WriterT w m) where
427+ lookupEnv = lift . lookupEnv
428+ getCurrentTime = lift getCurrentTime
429+ getCurrentTimeZone = lift getCurrentTimeZone
430+ getDefaultReferenceDocx = lift . getDefaultReferenceDocx
431+ getDefaultReferenceODT = lift . getDefaultReferenceODT
432+ newStdGen = lift newStdGen
433+ newUniqueHash = lift newUniqueHash
434+ readFileLazy = lift . readFileLazy
435+ readDataFile mbuserdir = lift . readDataFile mbuserdir
436+ fail = lift . fail
437+ fetchItem media = lift . fetchItem media
438+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
439+ glob = lift . glob
440+ getModificationTime = lift . getModificationTime
441+ getCommonState = lift getCommonState
442+ putCommonState = lift . putCommonState
443+
444+instance (PandocMonad m, Monoid w) => PandocMonad (RWST r w st m) where
445+ lookupEnv = lift . lookupEnv
446+ getCurrentTime = lift getCurrentTime
447+ getCurrentTimeZone = lift getCurrentTimeZone
448+ getDefaultReferenceDocx = lift . getDefaultReferenceDocx
449+ getDefaultReferenceODT = lift . getDefaultReferenceODT
450+ newStdGen = lift newStdGen
451+ newUniqueHash = lift newUniqueHash
452+ readFileLazy = lift . readFileLazy
453+ readDataFile mbuserdir = lift . readDataFile mbuserdir
454+ fail = lift . fail
455+ fetchItem media = lift . fetchItem media
456+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
457+ glob = lift . glob
458+ getModificationTime = lift . getModificationTime
459+ getCommonState = lift getCommonState
460+ putCommonState = lift . putCommonState
461+
462+instance PandocMonad m => PandocMonad (StateT st m) where
463+ lookupEnv = lift . lookupEnv
464+ getCurrentTime = lift getCurrentTime
465+ getCurrentTimeZone = lift getCurrentTimeZone
466+ getDefaultReferenceDocx = lift . getDefaultReferenceDocx
467+ getDefaultReferenceODT = lift . getDefaultReferenceODT
468+ newStdGen = lift newStdGen
469+ newUniqueHash = lift newUniqueHash
470+ readFileLazy = lift . readFileLazy
471+ readDataFile mbuserdir = lift . readDataFile mbuserdir
472+ fail = lift . fail
473+ fetchItem media = lift . fetchItem media
474+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
475+ glob = lift . glob
476+ getModificationTime = lift . getModificationTime
477+ getCommonState = lift getCommonState
478+ putCommonState = lift . putCommonState
479+