public ArgumentItem getArgument(int argumentIndex) { for (ArgumentItem each : argumentItemList) { Argument arg = each.getArgumentDescriptor(); if (arg.index() == argumentIndex) return each; if (arg.index() < argumentIndex && each.takesMultipleArguments()) return each; } return null; }
private void validate(ArgumentItem newArg) { Range newRange = newArg.getRange(); for (ArgumentItem each : argumentItemList) { Range r = each.getRange(); if (r.overlaps(newRange)) throw new XerialError( XerialErrorCode.DUPLICATE_OPTION, String.format("argument %s and %s have an overlap", each, newArg)); } }
protected static String argumentExpression(ArgumentItem argItem) { StringBuilder line = new StringBuilder(); Argument arg = argItem.getArgumentDescriptor(); String format; if (arg.required()) format = argItem.takesMultipleArguments() ? "%s ..." : "%s"; else format = argItem.takesMultipleArguments() ? "[%s ...]" : "[%s]"; String name = StringUtil.varNameToNaturalName(argItem.getArgumentName()); line.append(String.format(format, name)); return line.toString(); }