X-Git-Url: http://nitlanguage.org diff --git a/lib/opts.nit b/lib/opts.nit index ffa5954..30ea286 100644 --- a/lib/opts.nit +++ b/lib/opts.nit @@ -236,7 +236,13 @@ class OptionInt 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 @@ -281,7 +287,7 @@ class OptionContext 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] @@ -309,9 +315,10 @@ class OptionContext 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 @@ -372,7 +379,7 @@ class OptionContext 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 @@ -387,10 +394,10 @@ class OptionContext 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)