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 +4 -4
- data/lib/sequel/plugins/bit_fields.rb +36 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0719877bb0f8d93228e44b36ff7400cb3424f4c5
|
4
|
+
data.tar.gz: 085c323b7d443383f134e2b9c22c9d96ffb1a360
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
"#{
|
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.
|
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:
|
11
|
+
date: 2015-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|