findAndRemoveFlag method
Implementation
FlagFindResult? findAndRemoveFlag(List<String> args) {
if (long case final longFlag?) {
final index = args.indexOf(longFlag).asNullableIndex;
if (index != null) {
args.removeAt(index);
return FlagFindResult(index, FlagFindType.long, this);
}
}
if (short case final shortFlag?) {
final index = args.indexOf(shortFlag).asNullableIndex;
if (index != null) {
args.removeAt(index);
return FlagFindResult(index, FlagFindType.shortStandalone, this);
}
for (int i = 0; i < args.length; i++) {
final arg = args[i];
if (arg.length < 2) continue;
if (arg[0] != '-') continue;
if (arg[1] == '-') continue;
final newArg = arg.replaceFirst(shortFlag[1], '');
if (newArg.length < arg.length) {
if (newArg == '-') {
args.removeAt(i);
return FlagFindResult(i, FlagFindType.shortStandalone, this);
} else {
args[i] = newArg;
return FlagFindResult(i, FlagFindType.shortCombined, this);
}
}
}
}
return null;
}