module BitGirder::Core::BitGirderStructure
Public Class Methods
as_instance( val )
click to toggle source
# File lib/bitgirder/core.rb, line 889 def self.as_instance( val ) return val if val.is_a?( self ) BitGirderMethods.not_nil( val, :val ) cd = self.get_class_def cd.instance_mappers.each do |im| ( res = im.processor.call( val ) ) && ( return res ) end raise TypeError, "Don't know how to convert #{val.class} to #{self}" end
bg_abstract( meth )
click to toggle source
# File lib/bitgirder/core.rb, line 881 def self.bg_abstract( meth ) define_method( meth ) do raise "Abstract method #{self.class}##{meth} " \ "not implemented" end end
bg_attr( id, opts = {} )
click to toggle source
# File lib/bitgirder/core.rb, line 854 def self.bg_attr( id, opts = {} ) argh = { :identifier => id, :validation => :not_nil }. merge( opts ) self.get_class_def.add_attr( argh ) end
get_class_def()
click to toggle source
# File lib/bitgirder/core.rb, line 850 def self.get_class_def BitGirderClassDefinition.for_class( self ) end
included( cls )
click to toggle source
# File lib/bitgirder/core.rb, line 846 def self.included( cls ) cls.class_eval do def self.get_class_def BitGirderClassDefinition.for_class( self ) end def self.bg_attr( id, opts = {} ) argh = { :identifier => id, :validation => :not_nil }. merge( opts ) self.get_class_def.add_attr( argh ) end def self.map_instances( opts ) im = InstanceMapper.new( opts ) # Validation in InstanceMapper self.get_class_def.instance_mappers.unshift( im ) end def self.map_instance_of( *classes, &blk ) self.map_instances( :processor => lambda { |val| classes.find { |cls| val.is_a?( cls ) } && blk.call( val ) } ) end def self.bg_abstract( meth ) define_method( meth ) do raise "Abstract method #{self.class}##{meth} " \ "not implemented" end end def self.as_instance( val ) return val if val.is_a?( self ) BitGirderMethods.not_nil( val, :val ) cd = self.get_class_def cd.instance_mappers.each do |im| ( res = im.processor.call( val ) ) && ( return res ) end raise TypeError, "Don't know how to convert #{val.class} to #{self}" end def self.install_hash cd = self.get_class_def define_method( :hash ) { cd.hash_instance( self ) } end end end
install_hash()
click to toggle source
# File lib/bitgirder/core.rb, line 905 def self.install_hash cd = self.get_class_def define_method( :hash ) { cd.hash_instance( self ) } end
map_instance_of( *classes, &blk )
click to toggle source
# File lib/bitgirder/core.rb, line 871 def self.map_instance_of( *classes, &blk ) self.map_instances( :processor => lambda { |val| classes.find { |cls| val.is_a?( cls ) } && blk.call( val ) } ) end
map_instances( opts )
click to toggle source
# File lib/bitgirder/core.rb, line 865 def self.map_instances( opts ) im = InstanceMapper.new( opts ) # Validation in InstanceMapper self.get_class_def.instance_mappers.unshift( im ) end
new( *argv )
click to toggle source
# File lib/bitgirder/core.rb, line 825 def initialize( *argv ) BitGirderClassDefinition.init_instance( self, argv ) end
Public Instance Methods
==( other )
click to toggle source
# File lib/bitgirder/core.rb, line 830 def ==( other ) return true if self.equal?( other ) return false unless other.class == self.class ! self.class.get_class_def.attr_syms.find do |sym| other_val = other.instance_variable_get( sym ) self_val = instance_variable_get( sym ) other_val != self_val end end
Also aliased as: eql?
Private Instance Methods
impl_initialize()
click to toggle source
# File lib/bitgirder/core.rb, line 823 def impl_initialize; end