Module: BitMagic::Adapters::Base
- Defined in:
- lib/bit_magic/adapters/base.rb
Overview
This module is the core to all adapters. It provides the primary functionality that’s the starting point of all adapters: the bit_magic method.
This module is intended to be extended into the class scope through an adapter.
Instance Method Summary collapse
-
#bit_magic(name = nil, options = {}) ⇒ Magician, Hash
This is the bit_magic method that will be injected into the target class once this module is extended.
Instance Method Details
#bit_magic(name = nil, options = {}) ⇒ Magician, Hash
This is the bit_magic method that will be injected into the target class once this module is extended.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/bit_magic/adapters/base.rb', line 28 def bit_magic(name = nil, = {}) @bit_magic_fields ||= {} return @bit_magic_fields if name == nil if self.respond_to?(:bit_magic_adapter_defaults) = self.bit_magic_adapter_defaults() end name = name.to_sym @bit_magic_fields[name] = magician = Magician.new(name, ) @bit_magic_fields[name].define_bit_magic_methods self self.instance_eval do define_method(:"#{name}") do ivar = :"@bit_magic_#{name}" if instance_variable_defined?(ivar) instance_variable_get(ivar) else instance_variable_set(ivar, magician.bits_wrapper.new(self, magician)) end end end self.bit_magic_adapter(name) if self.respond_to?(:bit_magic_adapter) @bit_magic_fields[name] end |