class AWS::Record::Model::Attributes::SortableIntegerAttr

def self.check_range number, options

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

def self.deserialize string_value, options = {}

def self.deserialize string_value, options = {}
  offset_and_precision(options) do |offset,precision|
    string_value.to_i - offset
  end
end

def self.offset_and_precision options, &block

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

def self.serialize integer, options = {}

Returns:
  • (String) - A serialized representation of the integer.

Options Hash: (**options)
  • :range (required, Range) -- A range that represents the

Parameters:
  • options (Hash) --
  • integer (Integer) -- The number to serialize.
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

def initialize name, options = {}

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