diff options
Diffstat (limited to 'src/Data/JLD/Expansion/Global.hs')
| -rw-r--r-- | src/Data/JLD/Expansion/Global.hs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Data/JLD/Expansion/Global.hs b/src/Data/JLD/Expansion/Global.hs new file mode 100644 index 0000000..b92b4af --- /dev/null +++ b/src/Data/JLD/Expansion/Global.hs | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | module Data.JLD.Expansion.Global ( | ||
| 2 | JLDExpansionT, | ||
| 3 | JLDExpansionEnv (..), | ||
| 4 | JLDExpansionState (..), | ||
| 5 | hoistEnv, | ||
| 6 | modifyContextCache, | ||
| 7 | modifyDocumentCache, | ||
| 8 | ) where | ||
| 9 | |||
| 10 | import Data.JLD.Prelude | ||
| 11 | |||
| 12 | import Data.JLD.Control.Monad.RES (REST) | ||
| 13 | import Data.JLD.Error (JLDError) | ||
| 14 | import Data.JLD.Options (ContextCache, DocumentCache, DocumentLoader (..), JLDVersion (..), hoistDocumentLoader) | ||
| 15 | |||
| 16 | type JLDExpansionT e m = REST (JLDExpansionEnv e m) (JLDError e) JLDExpansionState m | ||
| 17 | |||
| 18 | data JLDExpansionEnv e m = JLDExpansionEnv | ||
| 19 | { jldExpansionEnvDocumentLoader :: DocumentLoader e m | ||
| 20 | , jldExpansionEnvProcessingMode :: JLDVersion | ||
| 21 | , jldExpansionEnvMaxRemoteContexts :: Int | ||
| 22 | } | ||
| 23 | deriving (Show) | ||
| 24 | |||
| 25 | data JLDExpansionState = JLDExpansionState | ||
| 26 | { jldExpansionStateContextCache :: ContextCache | ||
| 27 | , jldExpansionStateDocumentCache :: DocumentCache | ||
| 28 | } | ||
| 29 | deriving (Show, Eq) | ||
| 30 | |||
| 31 | hoistEnv :: (forall a. m a -> n a) -> JLDExpansionEnv e m -> JLDExpansionEnv e n | ||
| 32 | hoistEnv map' options = options{jldExpansionEnvDocumentLoader = options |> jldExpansionEnvDocumentLoader .> hoistDocumentLoader map'} | ||
| 33 | |||
| 34 | modifyContextCache :: MonadState JLDExpansionState m => (ContextCache -> ContextCache) -> m () | ||
| 35 | modifyContextCache fn = modify \s -> s{jldExpansionStateContextCache = fn (jldExpansionStateContextCache s)} | ||
| 36 | |||
| 37 | modifyDocumentCache :: MonadState JLDExpansionState m => (DocumentCache -> DocumentCache) -> m () | ||
| 38 | modifyDocumentCache fn = modify \s -> s{jldExpansionStateDocumentCache = fn (jldExpansionStateDocumentCache s)} | ||
