compaREST-0.1.0.0: src/Data/OpenApi/Compare/Validate/Sums.hs
module Data.OpenApi.Compare.Validate.Sums
( checkSums,
)
where
import Data.Foldable
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as M
import Data.OpenApi.Compare.Behavior
import Data.OpenApi.Compare.Paths
import Data.OpenApi.Compare.Subtree
checkSums ::
(Ord k, Issuable l) =>
Paths q r l ->
(k -> Issue l) ->
(k -> ProdCons t -> CompatFormula' q AnIssue r ()) ->
ProdCons (Map k t) ->
CompatFormula' q AnIssue r ()
checkSums xs noElt check (ProdCons p c) = for_ (M.toList p) $ \(key, prodElt) ->
case M.lookup key c of
Nothing -> issueAt xs $ noElt key
Just consElt ->
let sumElts = ProdCons prodElt consElt
in check key sumElts