# File lib/aws/record/model/attributes.rb, line 80 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 42 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 71 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 99 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 87 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