diff options
author | Kim Alvefur <zash@zash.se> | 2021-03-09 02:36:08 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2021-03-09 02:36:08 +0100 |
commit | da85d37bcb847acf53031811277392afe2a17ed2 (patch) | |
tree | bc2e53aa87813257f5a5aa10c5699dee4b017b34 /util/jsonschema.lua | |
parent | ce4040e1091705d94bb46c59dcd0cc16edde702e (diff) | |
download | prosody-da85d37bcb847acf53031811277392afe2a17ed2.tar.gz prosody-da85d37bcb847acf53031811277392afe2a17ed2.zip |
util.jsonschema: Implement the "prefixItems" keyword
This may have been what got me confused about "items" being an array.
Diffstat (limited to 'util/jsonschema.lua')
-rw-r--r-- | util/jsonschema.lua | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/util/jsonschema.lua b/util/jsonschema.lua index 4ace2d2d..97068c5c 100644 --- a/util/jsonschema.lua +++ b/util/jsonschema.lua @@ -197,8 +197,19 @@ type_validators.table = function(schema, data) return true end + local p = 0 + if schema.prefixItems then + for i, s in ipairs(schema.prefixItems) do + if validate(s, data[i]) then + p = i + else + return false + end + end + end + if schema.items then - for i = 1, #data do + for i = p + 1, #data do if not validate(schema.items, data[i]) then return false end |