Module: Bitfields::ClassMethods
- Defined in:
- lib/bitfields.rb
Instance Method Summary collapse
- #bitfield(column, *args) ⇒ Object
- #bitfield_bits(values) ⇒ Object
- #bitfield_column(bit_name) ⇒ Object
- #bitfield_sql(bit_values, options = {}) ⇒ Object
- #set_bitfield_sql(bit_values) ⇒ Object
Instance Method Details
#bitfield(column, *args) ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/bitfields.rb', line 42 def bitfield(column, *args) column = column.to_sym = args bitfield_args << [column, .dup] store_bitfield_values column, add_bitfield_methods column, end |
#bitfield_bits(values) ⇒ Object
51 52 53 54 |
# File 'lib/bitfields.rb', line 51 def bitfield_bits(values) bits = bitfields.values.reduce({}, :merge) values.sum { |bit, on| on ? bits.fetch(bit) : 0 } end |
#bitfield_column(bit_name) ⇒ Object
56 57 58 59 60 |
# File 'lib/bitfields.rb', line 56 def bitfield_column(bit_name) found = bitfields.detect{|_, bits| bits.keys.include?(bit_name.to_sym) } raise "Unknown bitfield #{bit_name}" unless found found.first end |
#bitfield_sql(bit_values, options = {}) ⇒ Object
62 63 64 65 |
# File 'lib/bitfields.rb', line 62 def bitfield_sql(bit_values, ={}) bits = group_bits_by_column(bit_values).sort_by{|c,_| c.to_s } bits.map{|column, bit_values| bitfield_sql_by_column(column, bit_values, ) } * ' AND ' end |
#set_bitfield_sql(bit_values) ⇒ Object
67 68 69 70 |
# File 'lib/bitfields.rb', line 67 def set_bitfield_sql(bit_values) bits = group_bits_by_column(bit_values).sort_by{|c,_| c.to_s } bits.map{|column, bit_values| set_bitfield_sql_by_column(column, bit_values) } * ', ' end |