diff --git a/CHANGELOG.md b/CHANGELOG.md index ee97a27..693fb1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,3 +54,8 @@ semantics ## 2.1.1 * Fix `Time` converter + +## 2.1.2 + +* Fix Integer type casting: Integer parses strings with leading zeros as numbers in octal number system +* Update version of bundler diff --git a/README.md b/README.md index f2f508c..fe67afa 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ end All converters return nil if conversion could not be made. -- Integer +- Integer (*string parsed as numbers in decimal number system*) - Float - String - Symbol diff --git a/lib/tainbox/type_converter.rb b/lib/tainbox/type_converter.rb index 668e8e4..eedcf7b 100644 --- a/lib/tainbox/type_converter.rb +++ b/lib/tainbox/type_converter.rb @@ -32,7 +32,7 @@ def convert end Tainbox.define_converter(Integer) do - Integer(value) rescue nil + value.is_a?(String) ? Integer(value, 10) : Integer(value) rescue nil end Tainbox.define_converter(Float) do diff --git a/lib/tainbox/version.rb b/lib/tainbox/version.rb index 9150c30..c2ab9ed 100644 --- a/lib/tainbox/version.rb +++ b/lib/tainbox/version.rb @@ -1,3 +1,3 @@ module Tainbox - VERSION = '2.1.2' + VERSION = '2.1.3' end diff --git a/spec/tainbox_spec.rb b/spec/tainbox_spec.rb index df45762..a013c4b 100644 --- a/spec/tainbox_spec.rb +++ b/spec/tainbox_spec.rb @@ -166,4 +166,32 @@ def name expect(oliver.name).to eq('John') end end + + describe "Integer type" do + let(:person) do + Class.new do + include Tainbox + + attribute :age, Integer + end + end + + let(:attributes) { Hash[age: age] } + + describe 'string with radix indicators' do + let(:age) { "014" } + + it 'uses decimal number system as base' do + expect(person.new(attributes).age).to eq(14) + end + end + + describe 'float number' do + let(:age) { 14.2 } + + it 'converts properly' do + expect(person.new(attributes).age).to eq(14) + end + end + end end diff --git a/tainbox.gemspec b/tainbox.gemspec index 52b18cf..372c3e9 100644 --- a/tainbox.gemspec +++ b/tainbox.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'activesupport' - spec.add_development_dependency 'bundler', '~> 1.8' + spec.add_development_dependency 'bundler', '~> 2.0' spec.add_development_dependency 'rake', '~> 10.0' spec.add_development_dependency 'pry' spec.add_development_dependency 'rspec'