parse method
Reads mergedArguments (by default from NatrixParser.mergeArguments())
and converts them into concrete, interface-compliant value representations.
Implementation
NatrixParserOutput parse(
final List<String> mergedArguments,
final Iterable<NatrixFlag> predefinedFlags,
) {
final List<String> options = [];
final List<String> args = mergedArguments;
for (int i = 0; i < args.length; i++) {
if (!args[i].startsWith("-")) {
options.add(simpleStringReduction(args[i]));
continue;
}
final NatrixParserFlag r = parseRawFlag(args[i]);
final NatrixFlag? flag = predefinedFlags.firstWhereOrNull(
(f) => r.isShort ? f.acronym == r.tag : f.id == r.tag,
);
if (flag == null) {
throw Exception(
"There is no flag with the identifier \"$r\" in this context.",
);
}
if (r.val.isNotEmpty || i >= args.length - 1) {
continue;
}
if (!args[i + 1].startsWith("-")) {
i++;
continue;
}
}
return NatrixParserOutput(
options,
parseFlags(mergedArguments, predefinedFlags),
);
}