class Assembly::Model
Attributes
client[R]
id[R]
Public Class Methods
class_name()
click to toggle source
# File lib/assembly/model.rb, line 75 def self.class_name self.name.split('::')[-1] end
construct_from(response, client=nil)
click to toggle source
# File lib/assembly/model.rb, line 27 def self.construct_from(response, client=nil) new(response[:id], client).merge(response, client) end
new(id=nil, client=nil)
click to toggle source
# File lib/assembly/model.rb, line 11 def initialize(id=nil, client=nil) @id = id @client = client @values = {} @dirty_values = Set.new end
Public Instance Methods
[](k)
click to toggle source
# File lib/assembly/model.rb, line 40 def [](k) @values[k.to_sym] end
[]=(k, v)
click to toggle source
# File lib/assembly/model.rb, line 44 def []=(k, v) send(:"#{k}=", v) end
as_json(*a)
click to toggle source
# File lib/assembly/model.rb, line 60 def as_json(*a) @values.as_json(*a) end
dirty?()
click to toggle source
# File lib/assembly/model.rb, line 36 def dirty? @dirty_values.any? end
dirty_params()
click to toggle source
# File lib/assembly/model.rb, line 79 def dirty_params @dirty_values.reduce({}) do |hsh, k| hsh[k] = @values[k] hsh end end
each(&blk)
click to toggle source
# File lib/assembly/model.rb, line 71 def each(&blk) @values.each(&blk) end
keys()
click to toggle source
# File lib/assembly/model.rb, line 48 def keys @values.keys end
merge(values, client=nil)
click to toggle source
# File lib/assembly/model.rb, line 18 def merge(values, client=nil) added = Set.new(values.keys - @values.keys) add_accessors(added) values.each do |k, v| @values[k] = Util.build(v, client) end self end
to_hash()
click to toggle source
# File lib/assembly/model.rb, line 64 def to_hash @values.inject({}) do |acc, (key, value)| acc[key] = value.respond_to?(:to_hash) ? value.to_hash : value acc end end
to_json(*a)
click to toggle source
# File lib/assembly/model.rb, line 56 def to_json(*a) JSON.generate(@values) end
update_from(response)
click to toggle source
# File lib/assembly/model.rb, line 31 def update_from(response) @dirty_values.clear merge(response) end
values()
click to toggle source
# File lib/assembly/model.rb, line 52 def values @values.values end
Protected Instance Methods
add_accessors(keys)
click to toggle source
# File lib/assembly/model.rb, line 92 def add_accessors(keys) keys.each do |k| next if k == :id next if self.class.instance_methods(false).include?(k) self.class.class_eval %[ def #{k} @values[:#{k}] end def #{k}=(v) @values[:#{k}] = v @dirty_values.add(:#{k}) end ] end end
metaclass()
click to toggle source
# File lib/assembly/model.rb, line 88 def metaclass class << self; self; end end