lib/slop/parser.rb in slop-4.0.0 vs lib/slop/parser.rb in slop-4.1.0
- old
+ new
@@ -32,20 +32,27 @@
# Once all options have been executed, any found options will have
# the `finish` method called on them.
#
# Returns a Slop::Result.
def parse(strings)
+ reset # reset before every parse
+
pairs = strings.each_cons(2).to_a
# this ensures we still support the last string being a flag,
# otherwise it'll only be used as an argument.
pairs << [strings.last, nil]
@arguments = strings.dup
pairs.each do |flag, arg|
+ break if !flag
+
# ignore everything after '--', flag or not
- break if !flag || flag == '--'
+ if flag == '--'
+ arguments.delete(flag)
+ break
+ end
# support `foo=bar`
if flag.include?("=")
flag, arg = flag.split("=")
end
@@ -93,10 +100,10 @@
flags.each { |f| try_process(f, nil) }
try_process(last, arg) # send the argument to the last flag
else
if flag.start_with?("-") && !suppress_errors?
- raise UnknownOption, "unknown option `#{flag}'"
+ raise UnknownOption.new("unknown option `#{flag}'", "#{flag}")
end
end
end
def suppress_errors?