Comparison

util/jsonschema.lua @ 13088:0fbb2b3fd4c0

util.jsonschema: Fix UTF-8ness of 'minLength' and 'maxLength'
author Kim Alvefur <zash@zash.se>
date Sun, 23 Apr 2023 10:42:07 +0200
parent 13087:5d3e8a226840
child 13162:6140aa67c618
comparison
equal deleted inserted replaced
13087:5d3e8a226840 13088:0fbb2b3fd4c0
1 -- This file is generated from teal-src/util/jsonschema.lua 1 -- This file is generated from teal-src/util/jsonschema.lua
2 2
3 local m_type = function(n) 3 local m_type = function(n)
4 return type(n) == "number" and n % 1 == 0 and n <= 9007199254740992 and n >= -9007199254740992 and "integer" or "float"; 4 return type(n) == "number" and n % 1 == 0 and n <= 9007199254740992 and n >= -9007199254740992 and "integer" or "float";
5 end;
6
7 local utf8 = rawget(_G, "utf8") or require("prosody.util.encodings").utf8;
8 local utf8_len = utf8.len or function(s)
9 local _, count = s:gsub("[%z\001-\127\194-\253][\128-\191]*", "");
10 return count
5 end; 11 end;
6 local json = require("prosody.util.json") 12 local json = require("prosody.util.json")
7 local null = json.null; 13 local null = json.null;
8 14
9 local pointer = require("prosody.util.jsonpointer") 15 local pointer = require("prosody.util.jsonpointer")
101 return false 107 return false
102 end 108 end
103 end 109 end
104 110
105 if type(data) == "string" then 111 if type(data) == "string" then
106 if schema.maxLength and #data > schema.maxLength then 112 if schema.maxLength and utf8_len(data) > schema.maxLength then
107 return false 113 return false
108 end 114 end
109 if schema.minLength and #data < schema.minLength then 115 if schema.minLength and utf8_len(data) < schema.minLength then
110 return false 116 return false
111 end 117 end
112 if schema.luaPattern and not data:match(schema.luaPattern) then 118 if schema.luaPattern and not data:match(schema.luaPattern) then
113 return false 119 return false
114 end 120 end