diff options
author | sigurdsvela <sigurdbergsvela@gmail.com> | 2015-04-06 23:13:46 +0200 |
---|---|---|
committer | sigurdsvela <sigurdbergsvela@gmail.com> | 2015-04-06 23:13:46 +0200 |
commit | 48d1aec2c4a42493ea06da0302538dc9ac834695 (patch) | |
tree | 32cc2e91f5aede4371a1bab414be243589011ff5 | |
parent | 877946b0a16607bec39dcd437d30e7bb0afa4600 (diff) | |
download | slop-48d1aec2c4a42493ea06da0302538dc9ac834695.tar.gz |
Implement getUnknownMessage in UnknownOption
This allows to retrive the unknown option in
question when catching the error.
This can be useful to, for example, taylor a
spesific output for common errors amongst users.
-rw-r--r-- | lib/slop/error.rb | 11 | ||||
-rw-r--r-- | lib/slop/parser.rb | 2 | ||||
-rw-r--r-- | test/error_test.rb | 7 |
3 files changed, 18 insertions, 2 deletions
diff --git a/lib/slop/error.rb b/lib/slop/error.rb index 55e0fe0..776b939 100644 --- a/lib/slop/error.rb +++ b/lib/slop/error.rb @@ -16,5 +16,14 @@ module Slop # Raised when an unknown option is parsed. Suppress # with the `suppress_errors` config option. - class UnknownOption < Error; end + class UnknownOption < Error; + def initialize(msg, unknownOption) + super(msg); + @unknownOption = unknownOption; + end + + def getUnknowOption() + return @unknownOption; + end + end end diff --git a/lib/slop/parser.rb b/lib/slop/parser.rb index 246da9f..8474e5d 100644 --- a/lib/slop/parser.rb +++ b/lib/slop/parser.rb @@ -102,7 +102,7 @@ module Slop 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 diff --git a/test/error_test.rb b/test/error_test.rb index 6a33c04..7ea30fc 100644 --- a/test/error_test.rb +++ b/test/error_test.rb @@ -21,6 +21,13 @@ describe Slop::UnknownOption do opts = Slop::Options.new opts.string "-n", "--name" assert_raises(Slop::UnknownOption) { opts.parse %w(--foo) } + + #Assert returns the unknown option in quetion + begin + opts.parse %w(--foo) + rescue Slop::UnknownOption => e + assert_equal(e.getUnknowOption(), "--foo"); + end end it "does not raise when errors are suppressed" do |