Co-authored-by: Richard Lyons <redacted>
static std::string build_repetition(const std::string & item_rule, int min_items, int max_items, const std::string & separator_rule = "") {
auto has_max = max_items != std::numeric_limits<int>::max();
+ if (max_items == 0) {
+ return "";
+ }
if (min_items == 0 && max_items == 1) {
return item_rule + "?";
}
def _build_repetition(item_rule, min_items, max_items, separator_rule=None):
+ if max_items == 0:
+ return ""
+
if min_items == 0 and max_items == 1:
return f'{item_rule}?'
const SPACE_RULE = '| " " | "\\n"{1,2} [ \\t]{0,20}';
function _buildRepetition(itemRule, minItems, maxItems, opts={}) {
+ if (maxItems == 0) {
+ return '';
+ }
if (minItems === 0 && maxItems === 1) {
return `${itemRule}?`;
}
)"""
});
+ test({
+ SUCCESS,
+ "maxItems 0",
+ R"""({
+ "items": {
+ "type": "boolean"
+ },
+ "maxItems": 0
+ })""",
+ R"""(
+ boolean ::= ("true" | "false") space
+ root ::= "[" space "]" space
+ space ::= | " " | "\n"{1,2} [ \t]{0,20}
+ )"""
+ });
+
test({
SUCCESS,
"maxItems 1",