Class: Assembly::Model

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/assembly/model.rb

Direct Known Subclasses

ApiModel, Grade, List

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id = nil, client = nil) ⇒ Model

Returns a new instance of Model.



11
12
13
14
15
16
# File 'lib/assembly/model.rb', line 11

def initialize(id=nil, client=nil)
  @id = id
  @client = client
  @values = {}
  @dirty_values = Set.new
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



9
10
11
# File 'lib/assembly/model.rb', line 9

def client
  @client
end

#idObject (readonly)

Returns the value of attribute id.



8
9
10
# File 'lib/assembly/model.rb', line 8

def id
  @id
end

Class Method Details

.class_nameObject



75
76
77
# File 'lib/assembly/model.rb', line 75

def self.class_name
  self.name.split('::')[-1]
end

.construct_from(response, client = nil) ⇒ Object



27
28
29
# File 'lib/assembly/model.rb', line 27

def self.construct_from(response, client=nil)
  new(response[:id], client).merge(response, client)
end

Instance Method Details

#[](k) ⇒ Object



40
41
42
# File 'lib/assembly/model.rb', line 40

def [](k)
  @values[k.to_sym]
end

#[]=(k, v) ⇒ Object



44
45
46
# File 'lib/assembly/model.rb', line 44

def []=(k, v)
  send(:"#{k}=", v)
end

#as_json(*a) ⇒ Object



60
61
62
# File 'lib/assembly/model.rb', line 60

def as_json(*a)
  @values.as_json(*a)
end

#dirty?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/assembly/model.rb', line 36

def dirty?
  @dirty_values.any?
end

#dirty_paramsObject



79
80
81
82
83
84
# 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) ⇒ Object



71
72
73
# File 'lib/assembly/model.rb', line 71

def each(&blk)
  @values.each(&blk)
end

#keysObject



48
49
50
# File 'lib/assembly/model.rb', line 48

def keys
  @values.keys
end

#merge(values, client = nil) ⇒ Object



18
19
20
21
22
23
24
25
# 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_hashObject



64
65
66
67
68
69
# 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) ⇒ Object



56
57
58
# File 'lib/assembly/model.rb', line 56

def to_json(*a)
  JSON.generate(@values)
end

#update_from(response) ⇒ Object



31
32
33
34
# File 'lib/assembly/model.rb', line 31

def update_from(response)
  @dirty_values.clear
  merge(response)
end

#valuesObject



52
53
54
# File 'lib/assembly/model.rb', line 52

def values
  @values.values
end