git.iko.soy/typeable/pandoc
on master help sign in
Instances of PandocMonad for common transformers.
4111fdbJohn MacFarlane
src/Text/Pandoc/Class.hs+79−2
@@ -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 #-}
3
4
4{-
5{-
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
100
104
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
402
407
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+