json: fix arrays (disallow [,1])

This commit is contained in:
ochafik 2024-03-01 14:11:13 +00:00
parent 87c91c0766
commit 09248e0897
2 changed files with 17 additions and 7 deletions

10
examples/commit.txt Normal file
View file

@ -0,0 +1,10 @@
- Adds support for `required` vs. optional properties, without the risk for repetitions.
- Adds support for `additionalProperties`
- Fixes handling of Arrays (`[ , 1]` no longer possible)
- Fixes ordering: retain original order unless overridden (rather than alphabetical)
- Add support for `$ref`
https://github.com/vega/ts-json-schema-generator
Before

View file

@ -90,18 +90,18 @@ class SchemaConverter:
list_item_operator = f'("," space {item_rule_name})'
successive_items = ""
min_items = schema.get("minItems", 0)
max_items = schema.get("maxItems")
if min_items > 0:
first_item = f"({item_rule_name})"
successive_items = list_item_operator * (min_items - 1)
min_items -= 1
else:
first_item = f"({item_rule_name})?"
max_items = schema.get("maxItems")
if max_items is not None and max_items > min_items:
successive_items += (list_item_operator + "?") * (max_items - min_items - 1)
else:
successive_items += list_item_operator + "*"
rule = f'"[" space {first_item} {successive_items} "]" space'
if min_items == 0:
rule = f'"[" space ({item_rule_name} {successive_items})? "]" space'
else:
rule = f'"[" space {item_rule_name} {successive_items} "]" space'
return self._add_rule(rule_name, rule)
else: