# File lib/aws/record/model/attributes.rb, line 78 def self.deserialize string_value, options = {} offset_and_precision(options) do |offset,precision| string_value.to_i - offset end end
# File lib/aws/record/model/attributes.rb, line 40 def initialize name, options = {} range = options[:range] raise ArgumentError, "missing required option :range" unless range raise ArgumentError, ":range should be a integer range" unless range.is_a?(Range) and range.first.is_a?(Integer) super(name, options) end
Returns a serialized representation of the integer value suitable for storing in SimpleDB.
attribute.serialize(123) #=> '123' # padded to the correct number of digits attribute.serialize('123', :range => (0..10_000) #=> '00123' # offset applied to make all values positive attribute.serialize('-55', :range => (-100..10_000) #=> '00045'
@param [Integer] integer The number to serialize. @param [Hash] options @option options [required,Range] :range A range that represents the
minimum and maximum values this integer can be. The returned value will have an offset applied (if min is less than 0) and will be zero padded.
@return [String] A serialized representation of the integer.
# File lib/aws/record/model/attributes.rb, line 69 def self.serialize integer, options = {} expect(Integer, integer) do check_range(integer, options) offset_and_precision(options) do |offset,precision| "%0#{precision}d" % (integer.to_i + offset) end end end
# File lib/aws/record/model/attributes.rb, line 97 def self.check_range number, options unless options[:range].include?(number) msg = "unable to serialize `#{number}`, falls outside " + "the range #{options[:range]}" raise msg end end
# File lib/aws/record/model/attributes.rb, line 85 def self.offset_and_precision options, &block min = options[:range].first max = options[:range].last offset = min < 0 ? min * -1 : 0 precision = (max + offset).to_s.length yield(offset, precision) end