class AWS::Record::Model::Attributes::SortableIntegerAttr
Public Class Methods
deserialize(string_value, options = {})
click to toggle source
# 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
new(name, options = {})
click to toggle source
Calls superclass method
AWS::Record::Attributes::BaseAttr.new
# 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
serialize(integer, options = {})
click to toggle source
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
Protected Class Methods
check_range(number, options)
click to toggle source
# 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
offset_and_precision(options) { |offset, precision| ... }
click to toggle source
# 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