diff options
-rw-r--r-- | teal-src/util/jsonschema.tl | 15 | ||||
-rw-r--r-- | util/jsonschema.lua | 13 |
2 files changed, 27 insertions, 1 deletions
diff --git a/teal-src/util/jsonschema.tl b/teal-src/util/jsonschema.tl index d2390f7e..3f5b0f26 100644 --- a/teal-src/util/jsonschema.tl +++ b/teal-src/util/jsonschema.tl @@ -38,7 +38,7 @@ local record schema_t -- arrays items : schema_t - contains : { schema_t } + contains : schema_t maxItems : number minItems : number uniqueItems : boolean @@ -285,6 +285,19 @@ type_validators.table = function (schema : schema_t, data : any) : boolean end end + if schema.contains then + local found = false + for i = 1, #data do + if validate(schema.contains, data[i]) then + found = true + break + end + end + if not found then + return false + end + end + return true end return false diff --git a/util/jsonschema.lua b/util/jsonschema.lua index b285feb4..4ace2d2d 100644 --- a/util/jsonschema.lua +++ b/util/jsonschema.lua @@ -205,6 +205,19 @@ type_validators.table = function(schema, data) end end + if schema.contains then + local found = false + for i = 1, #data do + if validate(schema.contains, data[i]) then + found = true + break + end + end + if not found then + return false + end + end + return true end return false |