summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/slop/parser.rb7
-rw-r--r--test/parser_test.rb5
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/slop/parser.rb b/lib/slop/parser.rb
index c12e2f5..246da9f 100644
--- a/lib/slop/parser.rb
+++ b/lib/slop/parser.rb
@@ -44,8 +44,13 @@ module Slop
@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?("=")
diff --git a/test/parser_test.rb b/test/parser_test.rb
index 0dc361c..85ba7e0 100644
--- a/test/parser_test.rb
+++ b/test/parser_test.rb
@@ -61,5 +61,10 @@ describe Slop::Parser do
it "returns all unparsed arguments" do
assert_equal %w(foo argument), @parser.arguments
end
+
+ it "does not return --" do
+ @parser.parse %w(-v -- --name lee)
+ assert_equal %w(--name lee), @parser.arguments
+ end
end
end