sequel-bit-fields 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/sequel-bit-fields.rb +11 -7
  2. metadata +1 -1
@@ -4,21 +4,25 @@ module Sequel::Plugins
4
4
  module BitFields
5
5
  def self.configure(model, bit_field_column, bit_fields, options = {})
6
6
  bit_fields.each_with_index do |bit_field_name, i|
7
+ index = 2**i
8
+
9
+ model.class.instance_eval do
10
+ define_method("#{bit_field_name}_sql") do |value=true|
11
+ "#{bit_field_column} & #{index} #{'!' unless value}= #{index}"
12
+ end
13
+ end
14
+
7
15
  model.instance_eval do
8
16
  define_method("#{bit_field_name}=") do |value|
9
17
  self[bit_field_column] = if value
10
- self[bit_field_column] | (2**i)
18
+ self[bit_field_column] | (index)
11
19
  else
12
- self[bit_field_column] ^ (2**i)
20
+ self[bit_field_column] ^ (index)
13
21
  end
14
22
  end
15
23
 
16
24
  define_method("#{bit_field_name}?") do
17
- self[bit_field_column] & (2**i) == (2**i)
18
- end
19
-
20
- define_method("#{bit_field_name}_sql") do
21
- "#{bit_field_column} & #{2**i} = #{2**i}"
25
+ self[bit_field_column] & (index) == (index)
22
26
  end
23
27
  end
24
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-bit-fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: