diff options
-rw-r--r-- | lib/slop/types.rb | 2 | ||||
-rw-r--r-- | test/types_test.rb | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/slop/types.rb b/lib/slop/types.rb index 4cd6136..07d7e62 100644 --- a/lib/slop/types.rb +++ b/lib/slop/types.rb @@ -53,7 +53,7 @@ module Slop class FloatOption < Option def call(value) # TODO: scientific notation, etc. - value =~ /\A-?\d*\.*\d+\z/ && value.to_f + value =~ /\A[+-]?\d*\.*\d+\z/ && value.to_f end end diff --git a/test/types_test.rb b/test/types_test.rb index ff1363c..171c4d9 100644 --- a/test/types_test.rb +++ b/test/types_test.rb @@ -54,11 +54,15 @@ describe Slop::FloatOption do @options = Slop::Options.new @apr = @options.float "--apr" @apr_value = 2.9 - @result = @options.parse %W(--apr #{@apr_value}) + @minus = @options.float "--minus" + @plus = @options.float "--plus" + @result = @options.parse %W(--apr #{@apr_value} --minus -6.1 --plus +9.4) end it "returns the value as a float" do assert_equal @apr_value, @result[:apr] + assert_equal (-6.1), @result[:minus] + assert_equal 9.4, @result[:plus] end it "returns nil for non-numbers by default" do |