0.0
No commit activity in last 3 years
No release in over 3 years
Agnostic Bitmask and BitmaskAttribute. This gem includes Bitmask for standalone usage, and BitmaskAttribute to decorate an existing attribute on any class.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

aukan-bitmask

Agnostic Bitmask Attribute

Installation

gem install aukan-bitmask

Bitmask

Usage:

flags = Bitmask.new({
  :bit_ids => [:flag1, :flag2, :flag3],
  :value => 0
})

# Setting the value of a bit
flags.set :flag2, true

flags.get :flag1 # false
flags.get :flag2 # true
flags.get :flag3 # false

flags.value         # 2
flags.value.to_s(2) # "10"

Reseting the mask value:

flags.value = 5

flags.get :flag1 # true
flags.get :flag2 # false
flags.get :flag3 # true

Changing the bit ids:

flags.value = 5

flags.bit_ids = [:flag1, :flag3, :flag2]  # Switching flag2 for flag3

flags.get :flag1 # true
flags.get :flag2 # true
flags.get :flag3 # false

BitmaskAttribute

Uses Bitmask to decorate a class attribute. Can be used on ActiveRecord or any ORM.

Usage:

class Something
  attr_accessor :flags

  include BitmaskAttribute
  bitmask_attribute :flags, {
    :bit_ids => [
      :flag1, :flag2, :flag3
    ],
    :default_value => 3
  }
end

algo = Something.new
algo.flags_bitmask.set(:flag1, false)

algo.flags_bitmask.get(:flag1) # false
algo.flags_bitmask.get(:flag2) # true