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)} | ||