Mercurial > prosody-hg
comparison util/jsonschema.lua @ 14172:94172bbf9074 13.0
util.jsonschema: Always accept 0 for multipleOf properties
Per the JSON schema test suite, 0 is considered "a multiple of anything" and
should never be rejected by the multipleOf test. The previous behaviour was to
always reject 0.
0 is *not* a valid value for multipleOf itself (which must be >0), but
util.jsonschema does not seem to do much/any validation of the provided schema
so I haven't added a check for that. I assume there are JSON schema schemas?
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 25 May 2026 11:32:33 +0100 |
| parents | eabd38507c1d |
| children | d975d280baec |
comparison
equal
deleted
inserted
replaced
| 14171:190d172ab021 | 14172:94172bbf9074 |
|---|---|
| 124 return false, errs | 124 return false, errs |
| 125 end | 125 end |
| 126 end | 126 end |
| 127 | 127 |
| 128 if type(data) == "number" then | 128 if type(data) == "number" then |
| 129 if schema.multipleOf and (data == 0 or data % schema.multipleOf ~= 0) then | 129 if schema.multipleOf and data ~= 0 and data % schema.multipleOf ~= 0 then |
| 130 table.insert(errs, mkerr(sloc .. "/luaPattern", iloc, "not a multiple")) | 130 table.insert(errs, mkerr(sloc .. "/luaPattern", iloc, "not a multiple")) |
| 131 return false, errs | 131 return false, errs |
| 132 end | 132 end |
| 133 | 133 |
| 134 if schema.maximum and not (data <= schema.maximum) then | 134 if schema.maximum and not (data <= schema.maximum) then |
