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.hs40
1 files changed, 38 insertions, 2 deletions
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 (
4 module Data.JLD.Options, 4 module Data.JLD.Options,
5 JLDExpansionParams (..), 5 JLDExpansionParams (..),
6 JLDExpansionState (..), 6 JLDExpansionState (..),
7 JLDFlatteningParams (..),
7 expand, 8 expand,
8 flatten, 9 flatten,
9) where 10) where
@@ -100,9 +101,44 @@ expand document baseUrl paramsFn = do
100 101
101 pure (result', state') 102 pure (result', state')
102 103
103flatten :: Monad m => Value -> URI -> (JLDExpansionParams () m -> JLDExpansionParams e m) -> m (Either (JLDError e) Value, JLDExpansionState) 104data JLDFlatteningParams e m = JLDFlatteningParams
105 { jldFlatteningParamsDocumentLoader :: DocumentLoader e m
106 , jldFlatteningParamsProcessingMode :: JLDVersion
107 , jldFlatteningParamsMaxRemoteContexts :: Int
108 , jldFlatteningParamsExpandContext :: Maybe Value
109 , jldFlatteningParamsFrameExpansion :: Bool
110 , jldFlatteningParamsState :: JLDExpansionState
111 , jldFlatteningParamsCompactArrays :: Bool
112 }
113 deriving (Show)
114
115flatten :: Monad m => Value -> URI -> (JLDFlatteningParams () m -> JLDFlatteningParams e m) -> m (Either (JLDError e) Value, JLDExpansionState)
104flatten document baseUrl paramsFn = do 116flatten document baseUrl paramsFn = do
105 (result, state') <- expand document baseUrl paramsFn 117 let JLDFlatteningParams{..} =
118 paramsFn
119 JLDFlatteningParams
120 { jldFlatteningParamsDocumentLoader = DocumentLoader <. const <. pure <| Left ()
121 , jldFlatteningParamsProcessingMode = JLD1_1
122 , jldFlatteningParamsMaxRemoteContexts = 20
123 , jldFlatteningParamsExpandContext = Nothing
124 , jldFlatteningParamsFrameExpansion = False
125 , jldFlatteningParamsState =
126 JLDExpansionState
127 { jldExpansionStateContextCache = mempty
128 , jldExpansionStateDocumentCache = mempty
129 }
130 , jldFlatteningParamsCompactArrays = True
131 }
132 expansionParams =
133 JLDExpansionParams
134 { jldExpansionParamsDocumentLoader = jldFlatteningParamsDocumentLoader
135 , jldExpansionParamsProcessingMode = jldFlatteningParamsProcessingMode
136 , jldExpansionParamsMaxRemoteContexts = jldFlatteningParamsMaxRemoteContexts
137 , jldExpansionParamsExpandContext = jldFlatteningParamsExpandContext
138 , jldExpansionParamsFrameExpansion = jldFlatteningParamsFrameExpansion
139 , jldExpansionParamsState = jldFlatteningParamsState
140 }
141 (result, state') <- expand document baseUrl (const expansionParams)
106 case result of 142 case result of
107 Left err -> pure (Left err, state') 143 Left err -> pure (Left err, state')
108 Right expanded -> fmap (,state') <. runExceptT <| F.flatten expanded 144 Right expanded -> fmap (,state') <. runExceptT <| F.flatten expanded