Class: Peacekeeper::Model
Instance Attribute Summary collapse
-
#data ⇒ Object
(also: #delegate)
readonly
Returns the value of attribute data.
Class Method Summary
collapse
Instance Method Summary
collapse
def_data_method, def_singleton_data_method, define_wrapped_singleton_method, method_missing, respond_to_missing?, wrap
Constructor Details
#initialize(*args) ⇒ Model
Returns a new instance of Model.
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/peacekeeper/model.rb', line 99
def initialize(*args)
if !args.nil? && args.length == 1 && args.first.kind_of?(data_class)
@data = args.first
else
@data = data_class.new(*args)
end
unless self.class.instance_methods(false).include?(:to_json)
class<<self
undef_method :to_json if respond_to?(:to_json)
undef_method :as_json if respond_to?(:as_json)
end
end
end
|
Instance Attribute Details
#data ⇒ Object
Also known as:
delegate
Returns the value of attribute data.
96
97
98
|
# File 'lib/peacekeeper/model.rb', line 96
def data
@data
end
|
Class Method Details
.config ⇒ Object
21
|
# File 'lib/peacekeeper/model.rb', line 21
def config; (@config ||= {}); end
|
.config=(new_config) ⇒ Object
23
24
25
26
27
28
29
30
|
# File 'lib/peacekeeper/model.rb', line 23
def config=(new_config)
@config = new_config
subclasses.each do |sub|
sub.config = @config
end
@config
end
|
.data_class ⇒ Object
50
51
52
53
|
# File 'lib/peacekeeper/model.rb', line 50
def data_class
return nil if self == Model
@data_class ||= (data_source.nil? ? nil : DataLoader.data_class(data_name: data_name, data_lib_name: data_lib_name, source: data_source))
end
|
.data_lib_name ⇒ Object
82
83
84
85
86
87
88
89
90
|
# File 'lib/peacekeeper/model.rb', line 82
def data_lib_name
name = data_name
name.gsub!(/::/, '/')
name.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
name.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
name.tr!("-", "_")
name.downcase!
name
end
|
.data_name ⇒ Object
78
79
80
|
# File 'lib/peacekeeper/model.rb', line 78
def data_name
self.name.sub(/Model$/, '')
end
|
.data_source ⇒ Object
32
|
# File 'lib/peacekeeper/model.rb', line 32
def data_source; (@data_source ||= nil); end
|
.data_source=(source) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/peacekeeper/model.rb', line 34
def data_source=(source)
@data_source = source
@loader = Loader.new(config.merge(source: source))
@loader.load_source
if source == :mock
data_class end
subclasses.each do |sub|
sub.data_source = @data_source
end
@data_source
end
|
.delegate ⇒ Object
54
55
56
57
|
# File 'lib/peacekeeper/model.rb', line 54
def data_class
return nil if self == Model
@data_class ||= (data_source.nil? ? nil : DataLoader.data_class(data_name: data_name, data_lib_name: data_lib_name, source: data_source))
end
|
.has_wrapper_for?(val) ⇒ Boolean
63
64
65
|
# File 'lib/peacekeeper/model.rb', line 63
def has_wrapper_for?(val)
!!wrapper_for(val)
end
|
.inherited(sub) ⇒ Object
56
57
58
59
60
61
|
# File 'lib/peacekeeper/model.rb', line 56
def inherited(sub)
unless sub.name.nil?
subclasses << sub
sub.setup(self)
end
end
|
.new ⇒ Object
14
15
16
17
|
# File 'lib/peacekeeper/model.rb', line 14
def new(*)
raise RuntimeError, "ModelObject cannot be instantiated directly. Please subclass first!" if self == Model
super
end
|
.setup(parent) ⇒ Object
73
74
75
76
|
# File 'lib/peacekeeper/model.rb', line 73
def setup(parent)
self.config = parent.config
self.data_source = parent.data_source
end
|
.subclasses ⇒ Object
19
|
# File 'lib/peacekeeper/model.rb', line 19
def subclasses; (@subclasses ||= []); end
|
.wrapper_for(val) ⇒ Object
67
68
69
70
71
|
# File 'lib/peacekeeper/model.rb', line 67
def wrapper_for(val)
subclasses.find do |subclass|
val == subclass.delegate
end
end
|
Instance Method Details
#==(obj) ⇒ Object
114
115
116
|
# File 'lib/peacekeeper/model.rb', line 114
def ==(obj)
obj.equal?(self) || @data == obj.data
end
|
#data_class ⇒ Object
118
119
120
|
# File 'lib/peacekeeper/model.rb', line 118
def data_class
self.class.data_class
end
|