From 8c49a30faa431b8b56a4b4926e7dae56b1311fea Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sun, 28 May 2023 08:13:08 +0200 Subject: Completed untested Flattening implementation --- src/Data/JLD.hs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/Data/JLD.hs') 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 ( JLDExpansionParams (..), JLDExpansionState (..), expand, + flatten, ) where import Data.JLD.Prelude @@ -15,6 +16,7 @@ import Data.JLD.Expansion (JLDEParams (..)) import Data.JLD.Expansion qualified as E (expand) import Data.JLD.Expansion.Context (buildActiveContext) import Data.JLD.Expansion.Global (JLDExpansionEnv (..), JLDExpansionState (..)) +import Data.JLD.Flattening qualified as F (flatten) import Data.JLD.Mime import Data.JLD.Model.ActiveContext (ActiveContext (..), newActiveContext) import Data.JLD.Model.Keyword (Keyword (..)) @@ -97,3 +99,10 @@ expand document baseUrl paramsFn = do Left err -> Left err pure (result', state') + +flatten :: Monad m => Value -> URI -> (JLDExpansionParams () m -> JLDExpansionParams e m) -> m (Either (JLDError e) Value, JLDExpansionState) +flatten document baseUrl paramsFn = do + (result, state') <- expand document baseUrl paramsFn + case result of + Left err -> pure (Left err, state') + Right expanded -> fmap (,state') <. runExceptT <| F.flatten expanded -- cgit v1.2.3-54-g00ecf