aboutsummaryrefslogtreecommitdiffstats
path: root/src/Data/JLD.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/JLD.hs')
-rw-r--r--src/Data/JLD.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Data/JLD.hs b/src/Data/JLD.hs
index c5c28eb..d7688d0 100644
--- a/src/Data/JLD.hs
+++ b/src/Data/JLD.hs
@@ -5,6 +5,7 @@ module Data.JLD (
5 JLDExpansionParams (..), 5 JLDExpansionParams (..),
6 JLDExpansionState (..), 6 JLDExpansionState (..),
7 expand, 7 expand,
8 flatten,
8) where 9) where
9 10
10import Data.JLD.Prelude 11import Data.JLD.Prelude
@@ -15,6 +16,7 @@ import Data.JLD.Expansion (JLDEParams (..))
15import Data.JLD.Expansion qualified as E (expand) 16import Data.JLD.Expansion qualified as E (expand)
16import Data.JLD.Expansion.Context (buildActiveContext) 17import Data.JLD.Expansion.Context (buildActiveContext)
17import Data.JLD.Expansion.Global (JLDExpansionEnv (..), JLDExpansionState (..)) 18import Data.JLD.Expansion.Global (JLDExpansionEnv (..), JLDExpansionState (..))
19import Data.JLD.Flattening qualified as F (flatten)
18import Data.JLD.Mime 20import Data.JLD.Mime
19import Data.JLD.Model.ActiveContext (ActiveContext (..), newActiveContext) 21import Data.JLD.Model.ActiveContext (ActiveContext (..), newActiveContext)
20import Data.JLD.Model.Keyword (Keyword (..)) 22import Data.JLD.Model.Keyword (Keyword (..))
@@ -97,3 +99,10 @@ expand document baseUrl paramsFn = do
97 Left err -> Left err 99 Left err -> Left err
98 100
99 pure (result', state') 101 pure (result', state')
102
103flatten :: Monad m => Value -> URI -> (JLDExpansionParams () m -> JLDExpansionParams e m) -> m (Either (JLDError e) Value, JLDExpansionState)
104flatten document baseUrl paramsFn = do
105 (result, state') <- expand document baseUrl paramsFn
106 case result of
107 Left err -> pure (Left err, state')
108 Right expanded -> fmap (,state') <. runExceptT <| F.flatten expanded