From 1bb6f74645e39bb45e33a7413771ea7f971628c9 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sat, 27 May 2023 12:10:51 +0200 Subject: Structural improvements --- src/Data/JLD/Expansion/Global.hs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/Data/JLD/Expansion/Global.hs (limited to 'src/Data/JLD/Expansion/Global.hs') 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 @@ +module Data.JLD.Expansion.Global ( + JLDExpansionT, + JLDExpansionEnv (..), + JLDExpansionState (..), + hoistEnv, + modifyContextCache, + modifyDocumentCache, +) where + +import Data.JLD.Prelude + +import Data.JLD.Control.Monad.RES (REST) +import Data.JLD.Error (JLDError) +import Data.JLD.Options (ContextCache, DocumentCache, DocumentLoader (..), JLDVersion (..), hoistDocumentLoader) + +type JLDExpansionT e m = REST (JLDExpansionEnv e m) (JLDError e) JLDExpansionState m + +data JLDExpansionEnv e m = JLDExpansionEnv + { jldExpansionEnvDocumentLoader :: DocumentLoader e m + , jldExpansionEnvProcessingMode :: JLDVersion + , jldExpansionEnvMaxRemoteContexts :: Int + } + deriving (Show) + +data JLDExpansionState = JLDExpansionState + { jldExpansionStateContextCache :: ContextCache + , jldExpansionStateDocumentCache :: DocumentCache + } + deriving (Show, Eq) + +hoistEnv :: (forall a. m a -> n a) -> JLDExpansionEnv e m -> JLDExpansionEnv e n +hoistEnv map' options = options{jldExpansionEnvDocumentLoader = options |> jldExpansionEnvDocumentLoader .> hoistDocumentLoader map'} + +modifyContextCache :: MonadState JLDExpansionState m => (ContextCache -> ContextCache) -> m () +modifyContextCache fn = modify \s -> s{jldExpansionStateContextCache = fn (jldExpansionStateContextCache s)} + +modifyDocumentCache :: MonadState JLDExpansionState m => (DocumentCache -> DocumentCache) -> m () +modifyDocumentCache fn = modify \s -> s{jldExpansionStateDocumentCache = fn (jldExpansionStateDocumentCache s)} -- cgit v1.2.3-54-g00ecf