aboutsummaryrefslogtreecommitdiffstats
path: root/src/Data/JLD.hs
diff options
context:
space:
mode:
authorVolpeon <github@volpeon.ink>2023-05-28 10:18:49 +0200
committerVolpeon <github@volpeon.ink>2023-05-28 10:18:49 +0200
commitb2c846b0daf9d6e26e1e2a07fecc848b4732baa0 (patch)
treed76c99df7a6e52301d41c59eac1736137062ceac /src/Data/JLD.hs
parentCompleted untested Flattening implementation (diff)
downloadhs-jsonld-b2c846b0daf9d6e26e1e2a07fecc848b4732baa0.tar.gz
hs-jsonld-b2c846b0daf9d6e26e1e2a07fecc848b4732baa0.tar.bz2
hs-jsonld-b2c846b0daf9d6e26e1e2a07fecc848b4732baa0.zip
Fixed flattening errors
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