sequel-bit_fields 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d46ee7d7264d2958f78f47fd783170c09bb3b78
4
- data.tar.gz: b309550fd9135bdfb87202a3edc2e0906a1f80ca
3
+ metadata.gz: 0719877bb0f8d93228e44b36ff7400cb3424f4c5
4
+ data.tar.gz: 085c323b7d443383f134e2b9c22c9d96ffb1a360
5
5
  SHA512:
6
- metadata.gz: eb3f72332fc0e844f33747ee3b563d432df37b353e924a38b8d6eb54b5f40c8d3a62237c4a7c90068dca7581910913f504954d5cb89dda5029bea68c0ba34dca
7
- data.tar.gz: 34547713494307a6ad33d6480b4e3da50e5245cbc5c1fd502d677e605dca45432aeeb166eb385545703a81c55ea3fef0fdaa7d0392b64c9914ab4734d89af893
6
+ metadata.gz: 8379c4df5ce6cd00804090101fe71d7232d33b2d61e1e39afc8a8b12a5af83202afd06bd6391c72d41db7df7091310c8bca9ec7fde812f69bcfc4f53bb76ab93
7
+ data.tar.gz: 4273eed00866679bff087318c5977ab6ab047e38ef411a60391a12bec5d0dd879915dd4af7cfa17a194a81c1d05f20f1d22a72863a19006b5673738fdd22caa8
@@ -64,7 +64,7 @@ module Sequel::Plugins
64
64
  end
65
65
  end
66
66
  end
67
-
67
+
68
68
  model.instance_eval do
69
69
  # inject convenience method for multiple flag or bit_field assignment
70
70
  # overrides default assignment behavior for column_name=
@@ -75,7 +75,7 @@ module Sequel::Plugins
75
75
  unless respond_to?(flag_assign)
76
76
  define_method(flag_assign) do |args|
77
77
  args = [*args]
78
-
78
+
79
79
  if args.empty?
80
80
  self[bit_field_column] = 0
81
81
  #argument is an integer
@@ -89,7 +89,7 @@ module Sequel::Plugins
89
89
  end
90
90
  end
91
91
  end
92
-
92
+
93
93
  unless respond_to?(:bit_field_values_for)
94
94
  # inject the method bit_field_values_for which
95
95
  # returns a hash with all the values of the bit_fields
@@ -114,6 +114,38 @@ module Sequel::Plugins
114
114
  end
115
115
  end
116
116
  end
117
+
118
+ unless respond_to?(:bit_changed?)
119
+ define_method(:bit_changed?) do |*args|
120
+ unless defined? self.initial_value()
121
+ raise "Dirty plugin was not activated. Add 'plugin :dirty' to your model declaration!"
122
+ end
123
+
124
+ if args.size == 1
125
+ bitfield_name = args.first
126
+
127
+ # Search for column name and bit
128
+ column_name = nil
129
+ bit = nil
130
+ @@bit_fields_for_models[model.to_s].each do |_column_name, bitfields|
131
+ bitfields.each_with_index do |bitfield, index|
132
+ if bitfield[:name] == bitfield_name
133
+ column_name = _column_name
134
+ bit = 1 << index
135
+ break
136
+ end
137
+ end
138
+ break if column_name
139
+ end
140
+ raise "Bit field with name `#{bitfield_name}' unknown" unless column_name
141
+
142
+ # Check if bit has changed
143
+ return initial_value(column_name) & bit != self[column_name] & bit
144
+ else
145
+ raise 'No bit field name was passed!'
146
+ end
147
+ end
148
+ end
117
149
  end
118
150
 
119
151
  bit_fields.each_with_index do |bit_field, i|
@@ -133,7 +165,7 @@ module Sequel::Plugins
133
165
  value = true if value.nil?
134
166
  options = { :table => self.table_name.to_s }.merge([*args][1] || {})
135
167
 
136
- "#{DB.literal(Sequel.qualify(options[:table], bit_field_column))} & #{index} #{'!' unless value}= #{index}"
168
+ "#{db.literal(Sequel.qualify(options[:table], bit_field_column))} & #{index} #{'!' unless value}= #{index}"
137
169
  end
138
170
  end
139
171
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-bit_fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sascha Depold
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-15 00:00:00.000000000 Z
11
+ date: 2015-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel