attr_bitwise 0.0.3 → 0.0.4

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: 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