diff --git a/lib/sqids.rb b/lib/sqids.rb index d278b01..3799781 100644 --- a/lib/sqids.rb +++ b/lib/sqids.rb @@ -51,7 +51,7 @@ def initialize(options = {}) def encode(numbers) return '' if numbers.empty? - in_range_numbers = numbers.select { |n| n >= 0 && n <= Sqids.max_value } + in_range_numbers = numbers.map(&:to_i).select { |n| n >= 0 && n <= Sqids.max_value } unless in_range_numbers.length == numbers.length raise ArgumentError, "Encoding supports numbers between 0 and #{Sqids.max_value}" diff --git a/spec/encoding_spec.rb b/spec/encoding_spec.rb index 12d2e16..3c9097b 100644 --- a/spec/encoding_spec.rb +++ b/spec/encoding_spec.rb @@ -100,6 +100,14 @@ expect(sqids.encode([])).to eq('') end + it 'encoding with float' do + sqids = Sqids.new + float = 3.14159265 + encoded_float = sqids.encode([float]) + encoded_int = sqids.encode([float.to_i]) + expect(encoded_float).to eq(encoded_int) + end + it 'decoding empty string' do sqids = Sqids.new expect(sqids.decode('')).to eq([])