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
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