Class: Ooz::Common::BaseModel

Inherits:
BaseClass show all
Defined in:
lib/ooz/common/base_model.rb

Direct Known Subclasses

Base::Model

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseClass

overridable_const, passthrough, passthrough_arr, passthrough_cls

Constructor Details

#initialize(doc = {}) ⇒ BaseModel

Returns a new instance of BaseModel.



5
6
7
8
9
# File 'lib/ooz/common/base_model.rb', line 5

def initialize(doc = {})
  @doc          = doc
  @original_doc = JSON.parse(doc.to_json)
  @last_change  = {}
end

Instance Attribute Details

#docObject (readonly)

Returns the value of attribute doc.



4
5
6
# File 'lib/ooz/common/base_model.rb', line 4

def doc
  @doc
end

Class Method Details

.build(doc = {}) ⇒ Object



11
12
13
14
15
# File 'lib/ooz/common/base_model.rb', line 11

def self.build(doc = {})
  new(doc).tap do |instance|
    instance.instance_variable_set("@original_doc", {})
  end
end

Instance Method Details

#as_jsonObject



22
23
24
# File 'lib/ooz/common/base_model.rb', line 22

def as_json
  doc
end

#as_updateObject



38
39
40
41
# File 'lib/ooz/common/base_model.rb', line 38

def as_update
  new_doc = as_json
  Common::HashDiff.diff(new_doc, @original_doc)
end

#changed?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/ooz/common/base_model.rb', line 43

def changed?
  !as_update.empty?
end

#consolidate!Object



30
31
32
# File 'lib/ooz/common/base_model.rb', line 30

def consolidate!
  @original_doc = JSON.parse(@doc.to_json)
end

#new_change?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/ooz/common/base_model.rb', line 47

def new_change?
  !Common::HashDiff.diff(as_update, @last_change).empty?
end


17
18
19
20
# File 'lib/ooz/common/base_model.rb', line 17

def print
  puts JSON.pretty_generate(as_json)
  self
end

#to_json(*args) ⇒ Object



26
27
28
# File 'lib/ooz/common/base_model.rb', line 26

def to_json(*args)
  doc.to_json(*args)
end

#undo!Object



34
35
36
# File 'lib/ooz/common/base_model.rb', line 34

def undo!
  @doc = JSON.parse(@original_doc.to_json)
end

#update_last_change!Object



51
52
53
54
55
# File 'lib/ooz/common/base_model.rb', line 51

def update_last_change!
  last_chg = @last_change
  @last_change = as_update
  last_chg
end