Instances of PandocMonad for common transformers.

This commit is contained in:
John MacFarlane 2016-12-08 22:12:04 +01:00
parent 54932ade67
commit 4111fdbaf0

View file

@ -1,5 +1,6 @@
{-# LANGUAGE DeriveFunctor, DeriveDataTypeable, TypeSynonymInstances,
FlexibleInstances, GeneralizedNewtypeDeriving, FlexibleContexts #-}
FlexibleInstances, GeneralizedNewtypeDeriving, FlexibleContexts,
MultiParamTypeClasses, UndecidableInstances #-}
{-
Copyright (C) 2016 Jesse Rosenthal <jrosenthal@jhu.edu>
@ -91,6 +92,9 @@ import System.FilePath ((</>))
import qualified System.FilePath.Glob as IO (glob)
import qualified System.Directory as IO (getModificationTime)
import Control.Monad.State hiding (fail)
import Control.Monad.Reader (ReaderT)
import Control.Monad.Writer (WriterT)
import Control.Monad.RWS (RWST)
import Control.Monad.Except hiding (fail)
import Data.Word (Word8)
import Data.Default
@ -98,7 +102,8 @@ import System.IO.Error
import qualified Data.Map as M
import Text.Pandoc.Error
class (Functor m, Applicative m, Monad m, MonadError PandocError m) => PandocMonad m where
class (Functor m, Applicative m, Monad m, MonadError PandocError m)
=> PandocMonad m where
lookupEnv :: String -> m (Maybe String)
getCurrentTime :: m UTCTime
getCurrentTimeZone :: m TimeZone
@ -400,3 +405,75 @@ instance PandocMonad m => PandocMonad (ParserT s st m) where
getCommonState = lift getCommonState
putCommonState = lift . putCommonState
instance PandocMonad m => PandocMonad (ReaderT r m) where
lookupEnv = lift . lookupEnv
getCurrentTime = lift getCurrentTime
getCurrentTimeZone = lift getCurrentTimeZone
getDefaultReferenceDocx = lift . getDefaultReferenceDocx
getDefaultReferenceODT = lift . getDefaultReferenceODT
newStdGen = lift newStdGen
newUniqueHash = lift newUniqueHash
readFileLazy = lift . readFileLazy
readDataFile mbuserdir = lift . readDataFile mbuserdir
fail = lift . fail
fetchItem media = lift . fetchItem media
fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
glob = lift . glob
getModificationTime = lift . getModificationTime
getCommonState = lift getCommonState
putCommonState = lift . putCommonState
instance (PandocMonad m, Monoid w) => PandocMonad (WriterT w m) where
lookupEnv = lift . lookupEnv
getCurrentTime = lift getCurrentTime
getCurrentTimeZone = lift getCurrentTimeZone
getDefaultReferenceDocx = lift . getDefaultReferenceDocx
getDefaultReferenceODT = lift . getDefaultReferenceODT
newStdGen = lift newStdGen
newUniqueHash = lift newUniqueHash
readFileLazy = lift . readFileLazy
readDataFile mbuserdir = lift . readDataFile mbuserdir
fail = lift . fail
fetchItem media = lift . fetchItem media
fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
glob = lift . glob
getModificationTime = lift . getModificationTime
getCommonState = lift getCommonState
putCommonState = lift . putCommonState
instance (PandocMonad m, Monoid w) => PandocMonad (RWST r w st m) where
lookupEnv = lift . lookupEnv
getCurrentTime = lift getCurrentTime
getCurrentTimeZone = lift getCurrentTimeZone
getDefaultReferenceDocx = lift . getDefaultReferenceDocx
getDefaultReferenceODT = lift . getDefaultReferenceODT
newStdGen = lift newStdGen
newUniqueHash = lift newUniqueHash
readFileLazy = lift . readFileLazy
readDataFile mbuserdir = lift . readDataFile mbuserdir
fail = lift . fail
fetchItem media = lift . fetchItem media
fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
glob = lift . glob
getModificationTime = lift . getModificationTime
getCommonState = lift getCommonState
putCommonState = lift . putCommonState
instance PandocMonad m => PandocMonad (StateT st m) where
lookupEnv = lift . lookupEnv
getCurrentTime = lift getCurrentTime
getCurrentTimeZone = lift getCurrentTimeZone
getDefaultReferenceDocx = lift . getDefaultReferenceDocx
getDefaultReferenceODT = lift . getDefaultReferenceODT
newStdGen = lift newStdGen
newUniqueHash = lift newUniqueHash
readFileLazy = lift . readFileLazy
readDataFile mbuserdir = lift . readDataFile mbuserdir
fail = lift . fail
fetchItem media = lift . fetchItem media
fetchItem' media sourceUrl = lift . fetchItem' media sourceUrl
glob = lift . glob
getModificationTime = lift . getModificationTime
getCommonState = lift getCommonState
putCommonState = lift . putCommonState