module BitfieldAttribute::Base::ClassMethods
Public Instance Methods
define_bits(*keys)
click to toggle source
# File lib/bitfield_attribute/base.rb, line 12 def define_bits(*keys) if @keys.present? raise ArgumentError, 'Define all your bits with a single #define_bits statement' end @keys = keys.map(&:to_sym) if @keys.uniq.size != @keys.size raise ArgumentError, "Bit names are not uniq" end if @keys.size > INTEGER_SIZE raise ArgumentError, "Too many bit names for #{INTEGER_SIZE}-bit integer" end define_bit_methods end
keys()
click to toggle source
# File lib/bitfield_attribute/base.rb, line 30 def keys @keys end
Private Instance Methods
define_bit_methods()
click to toggle source
# File lib/bitfield_attribute/base.rb, line 35 def define_bit_methods keys.each do |key| define_setter(key) define_getter(key) end end
define_getter(key)
click to toggle source
# File lib/bitfield_attribute/base.rb, line 49 def define_getter(key) define_method :"#{key}?" do @values[key] || false end alias_method key, :"#{key}?" end
define_setter(key)
click to toggle source
# File lib/bitfield_attribute/base.rb, line 42 def define_setter(key) define_method :"#{key}=" do |value| @values[key] = value write_bits end end