Class: SonJay::ObjectModel::Properties::Abstract
- Inherits:
-
Object
- Object
- SonJay::ObjectModel::Properties::Abstract
show all
- Extended by:
- Forwardable
- Defined in:
- lib/son_jay/object_model/properties/abstract.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(property_definitions) ⇒ Abstract
Returns a new instance of Abstract.
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 12
def initialize(property_definitions)
@property_definitions = property_definitions
@data = {}
@model_properties = Set.new
property_definitions.each do |d|
is_model_property = !! d.model_class
@data[d.name] = is_model_property ? d.model_class.new : nil
@model_properties << d.name if is_model_property
end
end
|
Instance Attribute Details
#model_properties ⇒ Object
Returns the value of attribute model_properties.
10
11
12
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 10
def model_properties
@model_properties
end
|
Instance Method Details
#[](name) ⇒ Object
28
29
30
31
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 28
def [](name)
name = property_definitions.name_from(name)
@data[name]
end
|
#[]=(name, value) ⇒ Object
40
41
42
43
44
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 40
def []=(name, value)
name = property_definitions.name_from(name)
raise PropertyNameError.new(name) unless @data.has_key?(name)
@data[name] = value
end
|
61
62
63
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 61
def
raise NotImplementedError, "Subclass responsibility"
end
|
#fetch(name) ⇒ Object
33
34
35
36
37
38
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 33
def fetch(name)
name = property_definitions.name_from(name)
@data.fetch(name)
rescue KeyError
raise PropertyNameError.new(name)
end
|
#load_data(data) ⇒ Object
46
47
48
49
50
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 46
def load_data(data)
data.each_pair do |name, value|
load_property name, value
end
end
|
#load_property(name, value) ⇒ Object
52
53
54
55
56
57
58
59
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 52
def load_property(name, value)
name = property_definitions.name_from(name)
if @data.has_key?( name )
load_defined_property name, value
else
name, value
end
end
|
#to_json(options = ::JSON::State.new) ⇒ Object
65
66
67
68
|
# File 'lib/son_jay/object_model/properties/abstract.rb', line 65
def to_json(options = ::JSON::State.new)
options = ::JSON::State.new(options) unless options.kind_of?(::JSON::State)
hash_for_json.to_json( options )
end
|