diff --git a/examples/commit.txt b/examples/commit.txt new file mode 100644 index 000000000..530bd2214 --- /dev/null +++ b/examples/commit.txt @@ -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 diff --git a/examples/json-schema-to-grammar.py b/examples/json-schema-to-grammar.py index 6a977f031..dc9c8fdde 100755 --- a/examples/json-schema-to-grammar.py +++ b/examples/json-schema-to-grammar.py @@ -90,18 +90,18 @@ class SchemaConverter: list_item_operator = f'("," space {item_rule_name})' successive_items = "" min_items = schema.get("minItems", 0) - 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 min_items > 0: + successive_items = list_item_operator * (min_items - 1) + min_items -= 1 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: