Changeset

11440:d5288c99bb5a

util.jsonschema: Correct "items" keyword Upon re-reading the JSON Schema spec, I found that 'items' wasn't a union of an array of schemas or a single schema, not sure where I got that from.
author Kim Alvefur <zash@zash.se>
date Tue, 09 Mar 2021 02:26:05 +0100
parents 11439:9abcdfdcdb01
children 11441:75a280e6e046
files teal-src/util/jsonschema.tl util/jsonschema.lua
diffstat 2 files changed, 9 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/teal-src/util/jsonschema.tl	Sun Mar 07 12:48:49 2021 +0100
+++ b/teal-src/util/jsonschema.tl	Tue Mar 09 02:26:05 2021 +0100
@@ -37,7 +37,7 @@
 	format : string
 
 	-- arrays
-	items : { schema_t } | schema_t
+	items : schema_t
 	contains : { schema_t }
 	maxItems : number
 	minItems : number
@@ -274,20 +274,12 @@
 			return true
 		end
 
-		local item_schemas = schema.items as {schema_t}
-		if item_schemas and item_schemas[1] == nil then
-			local item_schema = item_schemas as schema_t
-			for i, v in pairs(data) do
-				if i is number then
-					if not validate(item_schema, v) then
-						return false
-					end
+		if schema.items then
+			for i = 1, #data do
+				if not validate(schema.items, data[i]) then
+					return false
 				end
 			end
-		elseif item_schemas and item_schemas[1] ~= nil then
-			for i, s in ipairs(item_schemas) do
-				validate(s, data[i])
-			end
 		end
 
 		return true
--- a/util/jsonschema.lua	Sun Mar 07 12:48:49 2021 +0100
+++ b/util/jsonschema.lua	Tue Mar 09 02:26:05 2021 +0100
@@ -194,20 +194,12 @@
 			return true
 		end
 
-		local item_schemas = schema.items
-		if item_schemas and item_schemas[1] == nil then
-			local item_schema = item_schemas
-			for i, v in pairs(data) do
-				if type(i) == "number" then
-					if not validate(item_schema, v) then
-						return false
-					end
+		if schema.items then
+			for i = 1, #data do
+				if not validate(schema.items, data[i]) then
+					return false
 				end
 			end
-		elseif item_schemas and item_schemas[1] ~= nil then
-			for i, s in ipairs(item_schemas) do
-				validate(s, data[i])
-			end
 		end
 
 		return true