@@ -1,5 +1,6 @@
1{-# LANGUAGE DeriveFunctor, DeriveDataTypeable, TypeSynonymInstances,
1{-# LANGUAGE DeriveFunctor, DeriveDataTypeable, TypeSynonymInstances,
2−FlexibleInstances, GeneralizedNewtypeDeriving, FlexibleContexts #-}
2+FlexibleInstances, GeneralizedNewtypeDeriving, FlexibleContexts,
3+MultiParamTypeClasses, UndecidableInstances #-}
5Copyright (C) 2016 Jesse Rosenthal <jrosenthal@jhu.edu>
6Copyright (C) 2016 Jesse Rosenthal <jrosenthal@jhu.edu>
@@ -91,6 +92,9 @@ import System.FilePath ((</>))
91import qualified System.FilePath.Glob as IO (glob)
92import qualified System.FilePath.Glob as IO (glob)
92import qualified System.Directory as IO (getModificationTime)
93import qualified System.Directory as IO (getModificationTime)
93import Control.Monad.State hiding (fail)
94import Control.Monad.State hiding (fail)
95+import Control.Monad.Reader (ReaderT)
96+import Control.Monad.Writer (WriterT)
97+import Control.Monad.RWS (RWST)
94import Control.Monad.Except hiding (fail)
98import Control.Monad.Except hiding (fail)
95import Data.Word (Word8)
99import Data.Word (Word8)
96import Data.Default
100import Data.Default
@@ -98,7 +102,8 @@ import System.IO.Error
98import qualified Data.Map as M
102import qualified Data.Map as M
99import Text.Pandoc.Error
103import Text.Pandoc.Error
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
102 lookupEnv :: String -> m (Maybe String)
107 lookupEnv :: String -> m (Maybe String)
103 getCurrentTime :: m UTCTime
108 getCurrentTime :: m UTCTime
104 getCurrentTimeZone :: m TimeZone
109 getCurrentTimeZone :: m TimeZone
@@ -400,3 +405,75 @@ instance PandocMonad m => PandocMonad (ParserT s st m) where
400 getCommonState = lift getCommonState
405 getCommonState = lift getCommonState
401 putCommonState = lift . putCommonState
406 putCommonState = lift . putCommonState
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
419+ fetchItem media = lift . fetchItem media
420+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
422+ getModificationTime = lift . getModificationTime
423+ getCommonState = lift getCommonState
424+ putCommonState = lift . putCommonState
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
437+ fetchItem media = lift . fetchItem media
438+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
440+ getModificationTime = lift . getModificationTime
441+ getCommonState = lift getCommonState
442+ putCommonState = lift . putCommonState
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
455+ fetchItem media = lift . fetchItem media
456+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
458+ getModificationTime = lift . getModificationTime
459+ getCommonState = lift getCommonState
460+ putCommonState = lift . putCommonState
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
473+ fetchItem media = lift . fetchItem media
474+ fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
476+ getModificationTime = lift . getModificationTime
477+ getCommonState = lift getCommonState
478+ putCommonState = lift . putCommonState