class Yao::Resources::Base

Public Class Methods

add_instantiation_name_list(name) click to toggle source

@param name [String]

# File lib/yao/resources/base.rb, line 8
def self.add_instantiation_name_list(name)
  @instantiation_list ||= []
  @instantiation_list << name
end
friendly_attributes(*names) click to toggle source

@param name [Array]

# File lib/yao/resources/base.rb, line 20
def self.friendly_attributes(*names)
  names.map(&:to_s).each do |name|
    add_instantiation_name_list(name)
    define_method(name) do
      self[name]
    end
  end
end
instantiation?(name) click to toggle source

@param name [String] @return [bool]

# File lib/yao/resources/base.rb, line 15
def self.instantiation?(name)
  @instantiation_list.include?(name)
end
map_attribute_to_attribute(k_and_v) click to toggle source

@param k_and_v [Hash] @return [Symbol]

# File lib/yao/resources/base.rb, line 31
def self.map_attribute_to_attribute(k_and_v)
  as_json, as_method = *k_and_v.to_a.first.map(&:to_s)
  add_instantiation_name_list(as_method)
  define_method(as_method) do
    self[as_json]
  end
end
map_attribute_to_resource(k_and_v) click to toggle source

@param k_and_v [Hash] @return [Symbol]

# File lib/yao/resources/base.rb, line 41
def self.map_attribute_to_resource(k_and_v)
  _name, klass = *k_and_v.to_a.first
  name = _name.to_s
  add_instantiation_name_list(name)
  define_method(name) do
    unless self[name].empty?
      self[[name, klass].join("__")] ||= klass.new(self[name])
    end
  end
end
map_attribute_to_resources(k_and_v) click to toggle source

@param k_and_v [Hash] @return [Symbol]

# File lib/yao/resources/base.rb, line 54
def self.map_attribute_to_resources(k_and_v)
  _name, klass = *k_and_v.to_a.first
  name = _name.to_s
  add_instantiation_name_list(name)
  define_method(name) do
    self[[name, klass].join("__")] ||= self[name].map {|d|
      klass.new(d)
    }
  end
end
map_attributes_to_time(*names) click to toggle source

@param names [Array<Symbol>] @return [Symbol]

# File lib/yao/resources/base.rb, line 67
def self.map_attributes_to_time(*names)
  names.map(&:to_s).each do |name|
    add_instantiation_name_list(name)
    define_method(name) do
      time = self[name]
      Time.parse(time) if time
    end
  end
end
new(data_via_json) click to toggle source

@param data_via_json [Hash] @return [Hash]

# File lib/yao/resources/base.rb, line 79
def initialize(data_via_json)
  @data = data_via_json
end

Public Instance Methods

[](name) click to toggle source

@param name [String] @return [String]

# File lib/yao/resources/base.rb, line 85
def [](name)
  if @data["id"] && !@data.key?(name) && self.class.instantiation?(name)
    @data = self.class.get(@data["id"]).to_hash
  end
  @data[name]
end
[]=(name, value) click to toggle source

@param name [String] @param value [String] @return [String]

# File lib/yao/resources/base.rb, line 95
def []=(name, value)
  @data[name] = value
end
delete()
Alias for: destroy
destroy() click to toggle source

@return [String]

# File lib/yao/resources/base.rb, line 116
def destroy
  self.class.destroy(id)
end
Also aliased as: delete
id() click to toggle source

@return [String]

# File lib/yao/resources/base.rb, line 105
def id
  self["id"]
end
to_hash() click to toggle source

@return [Hash]

# File lib/yao/resources/base.rb, line 100
def to_hash
  @data
end
update(resource_params) click to toggle source

@param resource_params [Hash] @return [Yao::Resources::*]

# File lib/yao/resources/base.rb, line 111
def update(resource_params)
  self.class.update(id, resource_params)
end