Class: SonJay::ObjectModel

Inherits:
Object
  • Object
show all
Includes:
ActsAsModel
Defined in:
lib/son_jay/object_model.rb,
lib/son_jay/object_model/extra_data.rb,
lib/son_jay/object_model/properties.rb,
lib/son_jay/object_model/properties_definer.rb,
lib/son_jay/object_model/properties/abstract.rb,
lib/son_jay/object_model/property_definition.rb,
lib/son_jay/object_model/property_definitions.rb,
lib/son_jay/object_model/properties/properties_with_extra.rb,
lib/son_jay/object_model/properties/properties_without_extra.rb

Defined Under Namespace

Modules: Properties Classes: ExtraData, PropertiesDefiner, PropertyDefinition, PropertyDefinitions

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ActsAsModel

included

Constructor Details

#initializeObjectModel



14
15
16
17
18
19
# File 'lib/son_jay/object_model.rb', line 14

def initialize
  definitions = self.class.property_definitions
  @sonj_content = ObjectModel::Properties.new(
    definitions, self.class.extras_allowed?
  )
end

Instance Attribute Details

#sonj_contentObject (readonly)

Returns the value of attribute sonj_content.



12
13
14
# File 'lib/son_jay/object_model.rb', line 12

def sonj_content
  @sonj_content
end

Class Method Details

.extras_allowed?Boolean



56
57
58
# File 'lib/son_jay/object_model.rb', line 56

def extras_allowed?
  @extras_allowed ||= false
end

.property_definitionsObject



60
61
62
# File 'lib/son_jay/object_model.rb', line 60

def property_definitions
  @property_definitions ||= _evaluate_property_definitions
end

Instance Method Details

#[](name) ⇒ Object



31
32
33
34
35
# File 'lib/son_jay/object_model.rb', line 31

def [](name)
  name = self.class.property_definitions.name_from(name)
  source = property_store_for( name )
  source[ name ]
end

#[]=(name, value) ⇒ Object



25
26
27
28
29
# File 'lib/son_jay/object_model.rb', line 25

def []=(name, value)
  name = self.class.property_definitions.name_from(name)
  target = property_store_for( name )
  target[ name ] = value
end

#fetch(name) ⇒ Object



37
38
39
# File 'lib/son_jay/object_model.rb', line 37

def fetch(name)
  sonj_content.fetch( name )
end

#to_json(*args) ⇒ Object



21
22
23
# File 'lib/son_jay/object_model.rb', line 21

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