diff options
Diffstat (limited to 'src/Data/JLD/Expansion.hs')
| -rw-r--r-- | src/Data/JLD/Expansion.hs | 31 | 
1 files changed, 13 insertions, 18 deletions
| diff --git a/src/Data/JLD/Expansion.hs b/src/Data/JLD/Expansion.hs index 79a992d..beb10a3 100644 --- a/src/Data/JLD/Expansion.hs +++ b/src/Data/JLD/Expansion.hs | |||
| @@ -167,7 +167,7 @@ eo1314ExpandValue activeProperty value = do | |||
| 167 | expandValue activeProperty value | 167 | expandValue activeProperty value | 
| 168 | |> withStateRES eo1314StateJlde (\eo1314 jld -> eo1314{eo1314StateJlde = jld}) | 168 | |> withStateRES eo1314StateJlde (\eo1314 jld -> eo1314{eo1314StateJlde = jld}) | 
| 169 | 169 | ||
| 170 | eo1314ExpandKeywordItem :: Monad m => Maybe Text -> Key -> Keyword -> Value -> EO1314T e m () | 170 | eo1314ExpandKeywordItem :: forall e m. Monad m => Maybe Text -> Key -> Keyword -> Value -> EO1314T e m () | 
| 171 | eo1314ExpandKeywordItem inputType key keyword value = do | 171 | eo1314ExpandKeywordItem inputType key keyword value = do | 
| 172 | JLDEEnv{..} <- ask | 172 | JLDEEnv{..} <- ask | 
| 173 | let JLDExpansionEnv{..} = jldeEnvGlobal | 173 | let JLDExpansionEnv{..} = jldeEnvGlobal | 
| @@ -335,15 +335,14 @@ eo1314ExpandKeywordItem inputType key keyword value = do | |||
| 335 | 335 | ||
| 336 | -- 13.4.13.4. | 336 | -- 13.4.13.4. | 
| 337 | unless (KM.size expandedObjectValue == 1 && KM.member (show KeywordReverse) expandedObjectValue) do | 337 | unless (KM.size expandedObjectValue == 1 && KM.member (show KeywordReverse) expandedObjectValue) do | 
| 338 | let go key' reverseMap (Array item) | key' /= show KeywordReverse = foldlM (go' key') reverseMap item | ||
| 339 | go _ reverseMap _ = pure reverseMap | ||
| 340 | |||
| 341 | go' _ _ item | isListObject item || isValueObject item = throwError <| InvalidReversePropertyValue | ||
| 342 | go' key' reverseMap item = pure <| mapAddValue key' item True reverseMap | ||
| 343 | |||
| 338 | reverseMap <- gets <| getMapDefault (show KeywordReverse) <. eo1314StateResult | 344 | reverseMap <- gets <| getMapDefault (show KeywordReverse) <. eo1314StateResult | 
| 339 | reverseMap' <- | 345 | reverseMap' <- ifoldlM go reverseMap expandedObjectValue | 
| 340 | (\fn -> ifoldlM fn reverseMap expandedObjectValue) <| \key' rm -> \case | ||
| 341 | Array item | key' /= show KeywordReverse -> do | ||
| 342 | (\fn -> foldlM fn rm item) <| \rm' i -> | ||
| 343 | if isListObject i || isValueObject i | ||
| 344 | then throwError <| InvalidReversePropertyValue | ||
| 345 | else pure <| mapAddValue key' i True rm' | ||
| 346 | _ -> pure rm | ||
| 347 | 346 | ||
| 348 | if KM.null reverseMap' | 347 | if KM.null reverseMap' | 
| 349 | then eo1314ModifyResult <| KM.delete (show KeywordReverse) | 348 | then eo1314ModifyResult <| KM.delete (show KeywordReverse) | 
| @@ -555,16 +554,12 @@ eo1314ExpandNonKeywordItem key expandedProperty value = do | |||
| 555 | -- 13.13. | 554 | -- 13.13. | 
| 556 | if maybe False termDefinitionReversePropertyFlag keyTermDefinition | 555 | if maybe False termDefinitionReversePropertyFlag keyTermDefinition | 
| 557 | then do | 556 | then do | 
| 558 | reverseMap <- gets <| getMapDefault (show KeywordReverse) <. eo1314StateResult | ||
| 559 | |||
| 560 | -- 13.13.3. 13.13.4. | 557 | -- 13.13.3. 13.13.4. | 
| 561 | reverseMap' <- | 558 | let go _ item | isListObject item || isValueObject item = throwError InvalidReversePropertyValue | 
| 562 | (\fn -> foldlM fn reverseMap (valueToArray expandedValue'')) <| \rm item -> | 559 | go reverseMap item = pure <| mapAddValue (K.fromText expandedProperty) item True reverseMap | 
| 563 | if isListObject item || isValueObject item | 560 | |
| 564 | then -- 13.13.4.1. | 561 | reverseMap <- gets <| getMapDefault (show KeywordReverse) <. eo1314StateResult | 
| 565 | throwError InvalidReversePropertyValue | 562 | reverseMap' <- foldlM go reverseMap (valueToArray expandedValue'') | 
| 566 | else -- 13.13.4.3. | ||
| 567 | pure <| mapAddValue (K.fromText expandedProperty) item True rm | ||
| 568 | 563 | ||
| 569 | eo1314ModifyResult <| KM.insert (show KeywordReverse) (Object reverseMap') | 564 | eo1314ModifyResult <| KM.insert (show KeywordReverse) (Object reverseMap') | 
| 570 | else -- 13.14. | 565 | else -- 13.14. | 
