From b2c846b0daf9d6e26e1e2a07fecc848b4732baa0 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sun, 28 May 2023 10:18:49 +0200 Subject: Fixed flattening errors --- src/Data/JLD.hs | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'src/Data/JLD.hs') diff --git a/src/Data/JLD.hs b/src/Data/JLD.hs index d7688d0..a7042dc 100644 --- a/src/Data/JLD.hs +++ b/src/Data/JLD.hs @@ -4,6 +4,7 @@ module Data.JLD ( module Data.JLD.Options, JLDExpansionParams (..), JLDExpansionState (..), + JLDFlatteningParams (..), expand, flatten, ) where @@ -100,9 +101,44 @@ expand document baseUrl paramsFn = do pure (result', state') -flatten :: Monad m => Value -> URI -> (JLDExpansionParams () m -> JLDExpansionParams e m) -> m (Either (JLDError e) Value, JLDExpansionState) +data JLDFlatteningParams e m = JLDFlatteningParams + { jldFlatteningParamsDocumentLoader :: DocumentLoader e m + , jldFlatteningParamsProcessingMode :: JLDVersion + , jldFlatteningParamsMaxRemoteContexts :: Int + , jldFlatteningParamsExpandContext :: Maybe Value + , jldFlatteningParamsFrameExpansion :: Bool + , jldFlatteningParamsState :: JLDExpansionState + , jldFlatteningParamsCompactArrays :: Bool + } + deriving (Show) + +flatten :: Monad m => Value -> URI -> (JLDFlatteningParams () m -> JLDFlatteningParams e m) -> m (Either (JLDError e) Value, JLDExpansionState) flatten document baseUrl paramsFn = do - (result, state') <- expand document baseUrl paramsFn + let JLDFlatteningParams{..} = + paramsFn + JLDFlatteningParams + { jldFlatteningParamsDocumentLoader = DocumentLoader <. const <. pure <| Left () + , jldFlatteningParamsProcessingMode = JLD1_1 + , jldFlatteningParamsMaxRemoteContexts = 20 + , jldFlatteningParamsExpandContext = Nothing + , jldFlatteningParamsFrameExpansion = False + , jldFlatteningParamsState = + JLDExpansionState + { jldExpansionStateContextCache = mempty + , jldExpansionStateDocumentCache = mempty + } + , jldFlatteningParamsCompactArrays = True + } + expansionParams = + JLDExpansionParams + { jldExpansionParamsDocumentLoader = jldFlatteningParamsDocumentLoader + , jldExpansionParamsProcessingMode = jldFlatteningParamsProcessingMode + , jldExpansionParamsMaxRemoteContexts = jldFlatteningParamsMaxRemoteContexts + , jldExpansionParamsExpandContext = jldFlatteningParamsExpandContext + , jldExpansionParamsFrameExpansion = jldFlatteningParamsFrameExpansion + , jldExpansionParamsState = jldFlatteningParamsState + } + (result, state') <- expand document baseUrl (const expansionParams) case result of Left err -> pure (Left err, state') Right expanded -> fmap (,state') <. runExceptT <| F.flatten expanded -- cgit v1.2.3-54-g00ecf