aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2023-04-23 10:26:43 +0200
committerKim Alvefur <zash@zash.se>2023-04-23 10:26:43 +0200
commit3621b8ce9168d833303bc8090302a77dcd76e1fd (patch)
treef1f18027700e857d72e506478ba7996e0985577a /util
parentd78a32f136f4dc1d4c6fc839f43b93f98eae72fd (diff)
downloadprosody-3621b8ce9168d833303bc8090302a77dcd76e1fd.tar.gz
prosody-3621b8ce9168d833303bc8090302a77dcd76e1fd.zip
util.jsonschema: Implement 'minContains' and 'maxContains'
Diffstat (limited to 'util')
-rw-r--r--util/jsonschema.lua7
1 files changed, 3 insertions, 4 deletions
diff --git a/util/jsonschema.lua b/util/jsonschema.lua
index 2a6d6bbf..51ad506f 100644
--- a/util/jsonschema.lua
+++ b/util/jsonschema.lua
@@ -305,14 +305,13 @@ function complex_validate(schema, data, root)
end
if schema.contains ~= nil then
- local found = false
+ local found = 0
for i = 1, #data do
if validate(schema.contains, data[i], root) then
- found = true
- break
+ found = found + 1
end
end
- if not found then
+ if found < (schema.minContains or 1) or found > (schema.maxContains or math.huge) then
return false
end
end