class PBShipping::ApiObject

Public Class Methods

convert_to_api_object(values) click to toggle source
# File lib/pbshipping/api_object.rb, line 30
def self.convert_to_api_object(values)
  case values
  when Array
    values.map { |v| self.convert_to_api_object(v) }
  when Hash
    self.new(values)
  else
    values
  end
end
new(values=nil) click to toggle source
# File lib/pbshipping/api_object.rb, line 23
def initialize(values=nil)
  @values = {}
  if values != nil
    self.update(values)
  end
end

Public Instance Methods

[](k) click to toggle source
# File lib/pbshipping/api_object.rb, line 55
def [](k)
  @values[k.to_sym]
end
[]=(k, v) click to toggle source
# File lib/pbshipping/api_object.rb, line 59
def []=(k, v)
  update({k => v})
end
add_accessors(keys) click to toggle source
# File lib/pbshipping/api_object.rb, line 114
def add_accessors(keys)
  keys.each do |k|
    orig_k = k
    while respond_to?(k) do
      k = "_#{k}".to_sym
    end
    create_accessor(k, orig_k)
  end
end
as_json(*a) click to toggle source
# File lib/pbshipping/api_object.rb, line 79
def as_json(*a)
  @values.as_json(*a)
end
create_accessor(k_name, k_index) click to toggle source
# File lib/pbshipping/api_object.rb, line 105
def create_accessor(k_name, k_index)
  metaclass.instance_eval do
    define_method(k_name) { @values[k_index] }
    define_method(:"#{k_name}=") do |v|
      @values[k_index] = v unless k_index == ''
    end
  end
end
each(&blk) click to toggle source
# File lib/pbshipping/api_object.rb, line 87
def each(&blk)
  @values.each(&blk)
end
inspect() click to toggle source
# File lib/pbshipping/api_object.rb, line 101
def inspect()
  "#<#{self.class}:0x#{self.object_id.to_s(16)}}> json: " + self.to_s
end
key?(k) click to toggle source
# File lib/pbshipping/api_object.rb, line 91
def key?(k)
  @values.key?(k)
end
keys() click to toggle source
# File lib/pbshipping/api_object.rb, line 63
def keys
  @values.keys
end
metaclass() click to toggle source
# File lib/pbshipping/api_object.rb, line 124
def metaclass
  class << self
    self
  end
end
respond_to?(symbol) click to toggle source
Calls superclass method
# File lib/pbshipping/api_object.rb, line 96
def respond_to?(symbol)
  @values.has_key?(symbol) || super
end
to_hash() click to toggle source
# File lib/pbshipping/api_object.rb, line 83
def to_hash
  @values
end
to_json(*a) click to toggle source
# File lib/pbshipping/api_object.rb, line 75
def to_json(*a)
  JSON.dump(@values)
end
to_s(*args) click to toggle source
# File lib/pbshipping/api_object.rb, line 71
def to_s(*args)
  JSON.pretty_generate @values
end
update(values) click to toggle source
# File lib/pbshipping/api_object.rb, line 41
def update(values)
  values.each do |k, v|
    if v.is_a?(Array) || v.is_a?(Hash)
      new_v = self.class.convert_to_api_object(v)
    else
      new_v = v
    end
    @values[k.to_sym] = new_v
  end
  instance_eval do
    add_accessors(@values.keys)
  end
end
values() click to toggle source
# File lib/pbshipping/api_object.rb, line 67
def values
  @values.values
end