diff --git a/lib/mutations/integer_filter.rb b/lib/mutations/integer_filter.rb index 4b88b1a..d50ef51 100644 --- a/lib/mutations/integer_filter.rb +++ b/lib/mutations/integer_filter.rb @@ -25,8 +25,12 @@ def filter(data) # Ensure it's the correct data type (Integer) if !data.is_a?(Integer) - if data.is_a?(String) && data =~ /^-?\d/ - data = data.to_i + if data.is_a?(String) + begin + data = Integer(data) + rescue ArgumentError + return [data, :integer] + end else return [data, :integer] end diff --git a/spec/integer_filter_spec.rb b/spec/integer_filter_spec.rb index 5b690c2..db9f216 100644 --- a/spec/integer_filter_spec.rb +++ b/spec/integer_filter_spec.rb @@ -25,7 +25,7 @@ it "doesnt't allow other strings, nor does it allow random objects or symbols" do f = Mutations::IntegerFilter.new - ["zero","a1", {}, [], Object.new, :d].each do |thing| + ["zero", "6iamnotanumber", "a1", {}, [], Object.new, :d].each do |thing| _filtered, errors = f.filter(thing) assert_equal :integer, errors end