Class: SonJay::ObjectModel::PropertyDefinitions

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/son_jay/object_model/property_definitions.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePropertyDefinitions

Returns a new instance of PropertyDefinitions.



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

def initialize
  @definitions = []
  @names = Set.new
  @name_symbol_to_string_map = {}
end

Class Method Details

.from_initializations(property_initializations) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/son_jay/object_model/property_definitions.rb', line 10

def self.from_initializations(property_initializations)
  new.tap do |instance|
    definer = PropertiesDefiner.new( instance )
    property_initializations.each do |pi|
      definer.instance_eval &pi
    end
  end
end

Instance Method Details

#+(other) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/son_jay/object_model/property_definitions.rb', line 25

def +(other)
  sum = self.class.new
  each do |property_definition|
    sum << property_definition
  end
  other.each do |property_definition|
    sum << property_definition
  end
  sum
end

#<<(definition) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/son_jay/object_model/property_definitions.rb', line 36

def <<(definition)
  @definitions << definition
  name = definition.name
  @names << name
  @name_symbol_to_string_map[name.to_sym] = name
  self
end

#hard_model_dependenciesObject



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

def hard_model_dependencies
  map( &:model_class ).compact.uniq
end

#include_name?(name) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
57
# File 'lib/son_jay/object_model/property_definitions.rb', line 54

def include_name?(name)
  name = name_from( name )
  names.include?( name )
end

#name_from(name) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/son_jay/object_model/property_definitions.rb', line 46

def name_from(name)
  case name
  when String then name
  when Symbol then @name_symbol_to_string_map.fetch(name, name)
  else            "#{name}"
  end
end

#namesObject



63
64
65
# File 'lib/son_jay/object_model/property_definitions.rb', line 63

def names
  @names.freeze
end