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?