diff options
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | lib/slop/types.rb | 6 | ||||
-rw-r--r-- | test/types_test.rb | 6 |
3 files changed, 12 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ad5838..7d8c2dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ HEAD (unreleased) Features: * Support for FloatOption #156 (Rick Hull) + * Support for `limit` config to ArrayOption. (Lee Jarvis) v4.0.0 (2014-12-27) ------------------- diff --git a/lib/slop/types.rb b/lib/slop/types.rb index 8bc7f65..df67aee 100644 --- a/lib/slop/types.rb +++ b/lib/slop/types.rb @@ -45,7 +45,7 @@ module Slop class ArrayOption < Option def call(value) @value ||= [] - @value.concat value.split(delimiter) + @value.concat value.split(delimiter, limit) end def default_value @@ -55,6 +55,10 @@ module Slop def delimiter config[:delimiter] || "," end + + def limit + config[:limit] || 0 + end end # An option that discards the return value, inherits from Bool diff --git a/test/types_test.rb b/test/types_test.rb index e060df5..1716776 100644 --- a/test/types_test.rb +++ b/test/types_test.rb @@ -57,6 +57,7 @@ describe Slop::ArrayOption do @options = Slop::Options.new @files = @options.array "--files" @delim = @options.array "-d", delimiter: ":" + @limit = @options.array "-l", limit: 2 @result = @options.parse %w(--files foo.txt,bar.rb) end @@ -77,6 +78,11 @@ describe Slop::ArrayOption do @result.parser.reset.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) + assert_equal ["foo", "bar,baz"], @result[:l] + end end describe Slop::NullOption do |