summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsigurdsvela <sigurdbergsvela@gmail.com>2015-04-06 23:13:46 +0200
committersigurdsvela <sigurdbergsvela@gmail.com>2015-04-06 23:13:46 +0200
commit48d1aec2c4a42493ea06da0302538dc9ac834695 (patch)
tree32cc2e91f5aede4371a1bab414be243589011ff5
parent877946b0a16607bec39dcd437d30e7bb0afa4600 (diff)
downloadslop-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.rb11
-rw-r--r--lib/slop/parser.rb2
-rw-r--r--test/error_test.rb7
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