attr_bitwise 0.0.3 → 0.0.4

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: 57bf7aecf5f3ba5b00efa5ea754231c9b9ed5cef
4
- data.tar.gz: e7db4dc252699db2f4ac1ffbf17e450952c1ae2f
3
+ metadata.gz: 16dab4194bbaa9823b98c7e854d2206d78f8973a
4
+ data.tar.gz: ebcca512d44597c2ef24616d47250c85866442cc
5
5
  SHA512:
6
- metadata.gz: 69872ff915d08721f8691bebdbfa512427d841cecc6d01e6cd7a4b3eeab54ba8fc63a9c3a5a23cb3aeff1fbf9359749897874820c5a0c1c83ca3f8fb081e4329
7
- data.tar.gz: 70f80d780266f62e51324652a8b85662f1e069bd296b10fd79ed5b64db40f50d57a5eb9876269bf9501efcf4fb96153fa01f15223751261e24537394836ace6a
6
+ metadata.gz: 39fed55c81083363efa43f2c62c5e1fc22d2e1123ae786ce25ed97da56fc0cbe6689b943cc918d095b429ec0a772ea116a0e9ce1260ddc7ab42731eb82dcb1a1
7
+ data.tar.gz: 9b7cab5a08b27f10e77e7e92971b26deca51b297944ad263f00db6c4d6b6afde6f0271f4d1279f34ef6edb6aba188c9483f9a910d830948f280dffc168dda046
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- attr_bitwise (0.0.3)
4
+ attr_bitwise (0.0.4)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -63,33 +63,28 @@ module AttrBitwise
63
63
  def attr_bitwise(name, column_name: nil, mapping:)
64
64
  column_name = "#{name}_value" unless column_name.present?
65
65
 
66
- # mask attribute_accessor (internals)
67
- define_method('value') { send(column_name) }
68
- define_method('value=') { |value| send("#{column_name}=", value) }
69
-
70
66
  # build mapping
71
67
  bitwise_mapping = build_mapping(mapping, name)
72
68
 
73
69
  # mask to symbols helper
74
- define_method("#{name}") { send(:value_getter, bitwise_mapping) }
75
-
70
+ define_method("#{name}") { send(:value_getter, column_name, bitwise_mapping) }
76
71
  define_method("#{name}=") do |values_or_symbols_array|
77
- send(:value_setter, Array(values_or_symbols_array), bitwise_mapping)
72
+ send(:value_setter, column_name, Array(values_or_symbols_array), bitwise_mapping)
78
73
  end
79
74
 
80
75
  # masks symbol presence
81
76
  define_method("#{name.to_s.singularize}?") do |value_or_symbol|
82
- send(:value?, force_to_bitwise_value(value_or_symbol, bitwise_mapping))
77
+ send(:value?, column_name, force_to_bitwise_value(value_or_symbol, bitwise_mapping))
83
78
  end
84
79
 
85
80
  # add value to mask
86
81
  define_method("add_#{name.to_s.singularize}") do |value_or_symbol|
87
- send(:add_value, force_to_bitwise_value(value_or_symbol, bitwise_mapping))
82
+ send(:add_value, column_name, force_to_bitwise_value(value_or_symbol, bitwise_mapping))
88
83
  end
89
84
 
90
85
  # remove value from mask
91
86
  define_method("remove_#{name.to_s.singularize}") do |value_or_symbol|
92
- send(:remove_value, force_to_bitwise_value(value_or_symbol, bitwise_mapping))
87
+ send(:remove_value, column_name, force_to_bitwise_value(value_or_symbol, bitwise_mapping))
93
88
  end
94
89
 
95
90
  # compute values union against mask
@@ -226,35 +221,35 @@ module AttrBitwise
226
221
 
227
222
  # Return current value to symbols array
228
223
  # Ex : 011 => :slots, :credits
229
- def value_getter(mapping)
224
+ def value_getter(name, mapping)
230
225
  ComparableSymbolsArray.new(
231
- mapping.values.select { |pv| (value & pv) != 0 }.
226
+ mapping.values.select { |pv| (send(name) & pv) != 0 }.
232
227
  map { |v| value_to_sym(v, mapping) }
233
228
  )
234
229
  end
235
230
 
236
231
  # Set current values from values array
237
- def value_setter(values_or_symbols_array, mapping)
238
- self.value = 0
239
- values_or_symbols_array.each { |val| add_value(force_to_bitwise_value(val, mapping)) }
232
+ def value_setter(column_name, values_or_symbols_array, mapping)
233
+ send("#{column_name}=", 0)
234
+ values_or_symbols_array.each { |val| add_value(column_name, force_to_bitwise_value(val, mapping)) }
240
235
  end
241
236
 
242
237
  # Return if value presents in mask (raw value)
243
- def value?(val)
244
- value & val != 0
238
+ def value?(column_name, val)
239
+ send(column_name) & val != 0
245
240
  end
246
241
 
247
242
  # add `value_or_symbol` to mask
248
243
  # Ex, with values = `10`
249
244
  # add_value(1) => 11
250
- def add_value(val)
251
- self.value |= val
245
+ def add_value(column_name, val)
246
+ send("#{column_name}=", send(column_name) | val)
252
247
  end
253
248
 
254
249
  # remove `value_or_symbol` to mask
255
250
  # Ex, with values = `11`
256
251
  # remove_value(1) => 10
257
- def remove_value(val)
258
- self.value &= ~val
252
+ def remove_value(column_name, val)
253
+ send("#{column_name}=", send(column_name) & ~val)
259
254
  end
260
255
  end
@@ -1,3 +1,3 @@
1
1
  module AttrBitwise
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -8,11 +8,14 @@ describe AttrBitwise do
8
8
  include AttrBitwise
9
9
 
10
10
  attr_accessor :fruits_value
11
+ attr_accessor :vegetables_value
11
12
 
12
13
  attr_bitwise :fruits, mapping: [:banana, :apple]
14
+ attr_bitwise :vegetables, mapping: [:carrot, :pepper]
13
15
 
14
16
  def initialize
15
17
  @fruits_value = 0
18
+ @vegetables_value = 0
16
19
  end
17
20
 
18
21
  end
@@ -63,6 +66,11 @@ describe AttrBitwise do
63
66
  expect(subject.fruits).to eq [:banana, :apple]
64
67
  end
65
68
 
69
+ it 'shouldn\'t set values in other field' do
70
+ expect(subject.vegetables_value).to eq 0
71
+ expect(subject.vegetables).to eq []
72
+ end
73
+
66
74
  end
67
75
 
68
76
  context '#fruits==' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attr_bitwise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charly POLY
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-27 00:00:00.000000000 Z
11
+ date: 2016-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport