Skip to content

Greedy parsing of all remaining variadic arguments #2

@sormuras

Description

@sormuras

Use-case: record Option(Optional<String> a, List<String> b, Optional<String> c, List<String> more) {}, that is a schema that ends with a variadic more component.

Example args: tool --a A --b 1 --b 2 more --what-ever --does-not-matter
Expected result:

  • option.a() := Optional.of("a")
  • option.b() := List.of("1", "2")
  • option.c() := Optional.empty()
  • option.more() := List.of("more", "--what-ever" "--does-not-matter")

Locally, I replaced the following lines...

if (variadicList != null) { // variadic
variadicList.add(variadicArg.convert(arg));
continue;
}

... with:

if (variadicList != null) {  // variadic 
  variadicList.add(variadicArg.convert(arg)); 
  for (var j = i + 1; j < args.length; j++) {
    variadicList.add(variadicArg.convert(args[j]));
  }
  break;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions