sequel-bit_fields 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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