Class: MageHand::Base
- Inherits:
-
Object
- Object
- MageHand::Base
- Defined in:
- lib/ob_port/base.rb
Constant Summary collapse
- @@simple_attributes =
{}
- @@instance_attributes =
{}
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
Class Method Summary collapse
- .attr_array(method_name, options = {}) ⇒ Object
- .attr_instance(method_name, options = {}) ⇒ Object
- .attr_simple(*method_names) ⇒ Object
- .attributes ⇒ Object
- .inflate_if_nil(*method_names) ⇒ Object
- .instance_attributes ⇒ Object
- .model_name ⇒ Object
- .simple_attributes ⇒ Object
Instance Method Summary collapse
- #attributes ⇒ Object
- #inflate ⇒ Object
-
#initialize(client, attributes = nil) ⇒ Base
constructor
A new instance of Base.
- #instance_attributes ⇒ Object
- #simple_attributes ⇒ Object
- #to_json(*a) ⇒ Object
- #update_attributes!(attributes) ⇒ Object
Constructor Details
#initialize(client, attributes = nil) ⇒ Base
Returns a new instance of Base.
17 18 19 20 |
# File 'lib/ob_port/base.rb', line 17 def initialize(client, attributes=nil) self.client = client update_attributes!(attributes) end |
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
3 4 5 |
# File 'lib/ob_port/base.rb', line 3 def client @client end |
Class Method Details
.attr_array(method_name, options = {}) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/ob_port/base.rb', line 98 def self.attr_array(method_name, ={}) self.class_eval do name = method_name.to_s class_name = [:class_name] || name.singularize.classify code = <<-CODE def #{name} @#{name} end def #{name}=(new_#{name}) @#{name} = [] new_#{name}.each do |#{name.singularize}| @#{name} << #{class_name}.new(client, #{name.singularize}) end end CODE puts code if ENV['DEBUG'] module_eval code end end |
.attr_instance(method_name, options = {}) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/ob_port/base.rb', line 77 def self.attr_instance(method_name, ={}) self.class_eval do name = method_name.to_s class_name = [:class_name] || name.classify code = <<-CODE def #{name} @#{name} end def #{name}=(new_#{name}) @#{name} = #{class_name}.new(client, new_#{name.singularize}) end CODE puts code if ENV['DEBUG'] module_eval code @@instance_attributes[self.name] = [] unless @@instance_attributes[self.name] @@instance_attributes[self.name] << method_name end end |
.attr_simple(*method_names) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/ob_port/base.rb', line 7 def self.attr_simple(*method_names) @@simple_attributes[self.name] = [] unless @@simple_attributes[self.name] method_names.each do |method_name| attr_accessor method_name @@simple_attributes[self.name] << method_name end end |
.attributes ⇒ Object
58 59 60 |
# File 'lib/ob_port/base.rb', line 58 def self.attributes simple_attributes + instance_attributes end |
.inflate_if_nil(*method_names) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/ob_port/base.rb', line 119 def self.inflate_if_nil(*method_names) self.class_eval do method_names.each do |method_name| alias_method "#{method_name.to_s}_original".to_sym, method_name define_method method_name do inflate if self.send("#{method_name.to_s}_original".to_sym).nil? self.send("#{method_name.to_s}_original".to_sym) end end end end |
.instance_attributes ⇒ Object
50 51 52 |
# File 'lib/ob_port/base.rb', line 50 def self.instance_attributes @@instance_attributes[self.name] || [] end |
.model_name ⇒ Object
38 39 40 |
# File 'lib/ob_port/base.rb', line 38 def self.model_name @_model_name ||= ActiveModel::Name.new(self) end |
.simple_attributes ⇒ Object
42 43 44 |
# File 'lib/ob_port/base.rb', line 42 def self.simple_attributes @@simple_attributes[self.name] || [] end |
Instance Method Details
#attributes ⇒ Object
62 63 64 |
# File 'lib/ob_port/base.rb', line 62 def attributes self.class.attributes end |
#inflate ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/ob_port/base.rb', line 30 def inflate #if we don't have an id, the opject has not been created on the server yet return unless self.id hash = JSON.parse(client.access_token.get(individual_url).body) update_attributes!(hash) end |
#instance_attributes ⇒ Object
54 55 56 |
# File 'lib/ob_port/base.rb', line 54 def instance_attributes self.class.instance_attributes end |
#simple_attributes ⇒ Object
46 47 48 |
# File 'lib/ob_port/base.rb', line 46 def simple_attributes self.class.simple_attributes end |
#to_json(*a) ⇒ Object
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/ob_port/base.rb', line 66 def to_json(*a) json_hash = {} self.simple_attributes.each do |attribute| json_hash[attribute.to_s] = self.send(attribute) if self.send(attribute) end self.instance_attributes.each do |attribute| json_hash[attribute.to_s] = self.send(attribute).to_json if self.send(attribute) end json_hash.to_json(*a) end |
#update_attributes!(attributes) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/ob_port/base.rb', line 22 def update_attributes!(attributes) return unless attributes attributes.each do |key, value| setter = "#{key}=" self.send setter, value if self.respond_to?(setter) end end |