summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md3
-rw-r--r--lib/slop/parser.rb2
-rw-r--r--test/parser_test.rb10
-rw-r--r--test/result_test.rb8
-rw-r--r--test/types_test.rb10
5 files changed, 19 insertions, 14 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7d8c2dd..7518430 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,9 @@ Features:
* Support for FloatOption #156 (Rick Hull)
* Support for `limit` config to ArrayOption. (Lee Jarvis)
+Minor enhancements:
+ * Reset parser every time `parse` is called.
+
v4.0.0 (2014-12-27)
-------------------
diff --git a/lib/slop/parser.rb b/lib/slop/parser.rb
index 50b031c..c12e2f5 100644
--- a/lib/slop/parser.rb
+++ b/lib/slop/parser.rb
@@ -34,6 +34,8 @@ module Slop
#
# 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.
diff --git a/test/parser_test.rb b/test/parser_test.rb
index fe3b714..0dc361c 100644
--- a/test/parser_test.rb
+++ b/test/parser_test.rb
@@ -11,13 +11,13 @@ describe Slop::Parser do
end
it "ignores everything after --" do
- @parser.reset.parse %w(-v -- --name lee)
+ @parser.parse %w(-v -- --name lee)
assert_equal [@verbose], @parser.used_options
end
it "parses flag=argument" do
@options.integer "-p", "--port"
- @result.parser.reset.parse %w(--name=bob -p=123)
+ @result.parser.parse %w(--name=bob -p=123)
assert_equal "bob", @result[:name]
assert_equal 123, @result[:port]
end
@@ -28,19 +28,19 @@ describe Slop::Parser do
end
it "parses boolean flags" do
- @result.parser.reset.parse %w(-qv)
+ @result.parser.parse %w(-qv)
assert_equal true, @result.quiet?
assert_equal true, @result.verbose?
end
it "sends the argument to the last flag" do
- @result.parser.reset.parse %w(-qvn foo)
+ @result.parser.parse %w(-qvn foo)
assert_equal "foo", @result[:name]
end
it "doesn't screw up single hyphen long options" do
@options.string "-host"
- @result.parser.reset.parse %w(-host localhost)
+ @result.parser.parse %w(-host localhost)
assert_equal "localhost", @result[:host]
end
end
diff --git a/test/result_test.rb b/test/result_test.rb
index 41ed253..32574f1 100644
--- a/test/result_test.rb
+++ b/test/result_test.rb
@@ -22,27 +22,27 @@ describe Slop::Result do
it "increments option count" do
# test this here so it's more "full stack"
assert_equal 1, @verbose.count
- @result.parser.reset.parse %w(-v --verbose)
+ @result.parser.parse %w(-v --verbose)
assert_equal 2, @verbose.count
end
it "handles default values" do
@options.string("--foo", default: "bar")
- @result.parser.reset.parse %w()
+ @result.parser.parse %w()
assert_equal "bar", @result[:foo]
end
it "handles custom finishing" do
@options.string "--foo"
@options.reverse_everything "-r"
- @result.parser.reset.parse %w(-r --name lee --foo bar)
+ @result.parser.parse %w(-r --name lee --foo bar)
assert_equal %w(eel rab), @result.to_hash.values_at(:name, :foo)
end
it "yields arguments to option blocks" do
output = nil
@options.string("--foo") { |v| output = v }
- @result.parser.reset.parse %w(--foo bar)
+ @result.parser.parse %w(--foo bar)
assert_equal output, "bar"
end
diff --git a/test/types_test.rb b/test/types_test.rb
index 1716776..39cccc9 100644
--- a/test/types_test.rb
+++ b/test/types_test.rb
@@ -29,7 +29,7 @@ describe Slop::IntegerOption do
end
it "returns nil for non-numbers by default" do
- @result.parser.reset.parse %w(--age hello)
+ @result.parser.parse %w(--age hello)
assert_equal nil, @result[:age]
end
end
@@ -47,7 +47,7 @@ describe Slop::FloatOption do
end
it "returns nil for non-numbers by default" do
- @result.parser.reset.parse %w(--apr hello)
+ @result.parser.parse %w(--apr hello)
assert_equal nil, @result[:apr]
end
end
@@ -70,17 +70,17 @@ describe Slop::ArrayOption do
end
it "collects multiple option values" do
- @result.parser.reset.parse %w(--files foo.txt --files bar.rb)
+ @result.parser.parse %w(--files foo.txt --files bar.rb)
assert_equal %w(foo.txt bar.rb), @result[:files]
end
it "can use a custom delimiter" do
- @result.parser.reset.parse %w(-d foo.txt:bar.rb)
+ @result.parser.parse %w(-d foo.txt:bar.rb)
assert_equal %w(foo.txt bar.rb), @result[:d]
end
it "can use a custom limit" do
- @result.parser.reset.parse %w(-l foo,bar,baz)
+ @result.parser.parse %w(-l foo,bar,baz)
assert_equal ["foo", "bar,baz"], @result[:l]
end
end