super(help, default, names)
end
- redef fun convert(str) do return str.to_i
+ redef fun convert(str)
+ do
+ if str.is_int then return str.to_i
+
+ errors.add "Expected an integer for option {names.join(", ")}."
+ return 0
+ end
end
# An option with a Float as parameter
var rest = new Array[String]
# Errors found in the context after parsing
- var errors = new Array[String]
+ var context_errors = new Array[String]
private var optmap = new HashMap[String, Option]
end
end
- # Parse and assign options everywhere in the argument list
- fun parse(argv: Collection[String])
+ # Parse and assign options in `argv` or `args`
+ fun parse(argv: nullable Collection[String])
do
+ if argv == null then argv = args
var it = argv.iterator
parse_intern(it)
end
for opt in options do
if opt.mandatory and not opt.read then
- errors.add("Mandatory option {opt.names.join(", ")} not found.")
+ context_errors.add("Mandatory option {opt.names.join(", ")} not found.")
end
end
end
end
# Options parsing errors.
- fun get_errors: Array[String]
+ fun errors: Array[String]
do
var errors = new Array[String]
- errors.add_all(errors)
+ errors.add_all context_errors
for o in options do
for e in o.errors do
errors.add(e)