aboutsummaryrefslogtreecommitdiffstats
path: root/teal-src/util/jsonschema.tl
Commit message (Collapse)AuthorAgeFilesLines
* util.jsonschema: Fix validation to not assume presence of "type" fieldKim Alvefur2022-07-081-147/+152
| | | | | | | | | | | | | | | | | | | | | | MattJ reported a curious issue where validation did not work as expected. Primarily that the "type" field was expected to be mandatory, and thus leaving it out would result in no checks being performed. This was likely caused by misreading during initial development. Spent some time testing against https://github.com/json-schema-org/JSON-Schema-Test-Suite.git and discovered a multitude of issues, far too many to bother splitting into separate commits. More than half of them fail. Many because of features not implemented, which have been marked NYI. For example, some require deep comparisons e.g. when objects or arrays are present in enums fields. Some because of quirks with how Lua differs from JavaScript, e.g. no distinct array or object types. Tests involving fractional floating point numbers. We're definitely not going to follow references to remote resources. Or deal with UTF-16 sillyness. One test asserted that 1.0 is an integer, where Lua 5.3+ will disagree.
* util.jsonschema: Add support for $ref pointersKim Alvefur2021-12-291-23/+37
|
* util.jsonschema: Rename types for improved readabilityKim Alvefur2021-03-181-27/+31
|
* teal: Use new integer support in Teal 0.13.0Kim Alvefur2021-03-181-8/+8
|
* util.jsonschema: Add copyright-headerKim Alvefur2021-03-101-0/+9
|
* util.jsonschema: Restructure "type" keyword handlingKim Alvefur2021-03-091-9/+10
| | | | More in line with the other tests
* util.jsonschema: Syntax tweak to not upset syntax highlightingKim Alvefur2021-03-091-2/+2
| | | | | That whole condition stanza was shown as angry red, I think it's something with 'enum' being a key word in Teal.
* util.jsonschema: Implement "propertyNames"Kim Alvefur2021-03-091-0/+7
| | | | This is a bit special in Lua as tables are not limited to string keys
* util.jsonschema: Restructure handling of "properties" and "additionalProperties"Kim Alvefur2021-03-091-22/+8
| | | | This is a bit cleaner, I think
* util.jsonschema: Fix "uniqueItems" prematurely declaring a matchKim Alvefur2021-03-091-1/+0
|
* util.jsonschema: Implement the "prefixItems" keywordKim Alvefur2021-03-091-1/+13
| | | | This may have been what got me confused about "items" being an array.
* util.jsonschema: Implement the "contains" keywordKim Alvefur2021-03-091-1/+14
| | | | And apparently I had mistaken this for an array
* util.jsonschema: Allow a boolean as schemaKim Alvefur2021-03-091-1/+4
| | | | | | Apparently a schema must be either an object or a boolean. Not sure where I got this string shortcut from, but I think I will keep it as it is very convenient.
* util.jsonschema: Correct "items" keywordKim Alvefur2021-03-091-13/+5
| | | | | | 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.
* util.datamapper: Add support for mapping of elements where only one ↵Kim Alvefur2021-03-071-0/+1
| | | | | | | attribute matters E.g. <feature var='foo'/> in XEP-0030 and some other simple specifications.
* util.datamapper: Invent extension for using tag name as valueKim Alvefur2021-03-061-0/+1
| | | | | Useful for certain enum-like uses where the element name is the relevant information, e.g. chat states.
* util.jsonschema: Library for JSON Schema validationKim Alvefur2021-03-061-0/+327