Sha256: 52f2d7f1f5a1a00b27c1161b57c8b88174b05ea1895388c752b7034d4bc6fa7c
Contents?: true
Size: 1.18 KB
Versions: 1
Compression:
Stored size: 1.18 KB
Contents
require 'set' module SonJay class ObjectModel class PropertyDefinitions extend Forwardable include Enumerable 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 def initialize @definitions = [] @names = Set.new @name_symbol_to_string_map = {} end def <<(definition) @definitions << definition name = definition.name @names << name @name_symbol_to_string_map[name.to_sym] = name end def_delegators :@definitions, :each 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 def include_name?(name) name = name_from( name ) names.include?( name ) end def hard_model_dependencies map( &:model_class ).compact.uniq end def names @names.freeze end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
son_jay-0.4.1 | lib/son_jay/object_model/property_definitions.rb |