array_bit_mask 0.0.3 → 0.1.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 +7 -0
- data/.gitignore +3 -1
- data/README.md +2 -0
- data/array_bit_mask.gemspec +2 -1
- data/lib/array_bit_mask.rb +2 -2
- data/lib/array_bit_mask/version.rb +1 -1
- data/spec/array_bit_mask/bit_mask_spec.rb +7 -7
- data/spec/spec_helper.rb +0 -1
- metadata +25 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8152dc967ac4aefec5e6b328f45dede5e29a055b
|
4
|
+
data.tar.gz: 96bdb564088a023a1335a8e13fc2b5ea1634df9d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 281ad55df97ebf519729338221685e62ff1f0b00e88d29dbd0ce2d80dcfeaa5d817aa9b7f508d367b6d0d5c0dd03b36aa5048755a76bc7fedd4ebb2f61f86b03
|
7
|
+
data.tar.gz: 15975911d373a09ec07c20ddfcae67bc9b0b64340014353cdc1b8ffd3c49a318bf0a28fd9affffb21f300b9a5bd4b3cf063fc034ec7ded91a41f0254949384ab
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# ArrayBitMask
|
2
2
|
|
3
|
+
[](https://gemnasium.com/leschenko/array_bit_mask)
|
4
|
+
|
3
5
|
Creates methods that accepts array of values and save them as bit mask to the attribute with an "_mask" suffix using specified source.
|
4
6
|
|
5
7
|
## Installation
|
data/array_bit_mask.gemspec
CHANGED
@@ -17,7 +17,8 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = %w(lib)
|
19
19
|
|
20
|
+
gem.add_dependency 'activesupport'
|
21
|
+
|
20
22
|
gem.add_development_dependency 'rake'
|
21
23
|
gem.add_development_dependency 'rspec'
|
22
|
-
gem.add_runtime_dependency 'activesupport'
|
23
24
|
end
|
data/lib/array_bit_mask.rb
CHANGED
@@ -22,12 +22,12 @@ module ArrayBitMask
|
|
22
22
|
def as_bit_mask(attr, options={})
|
23
23
|
return 0 unless options[:source]
|
24
24
|
|
25
|
-
options
|
25
|
+
options[:column] ||= "#{attr}_mask"
|
26
26
|
|
27
27
|
define_method "#{attr}=" do |val|
|
28
28
|
source = bit_mask_source_for(options[:source])
|
29
29
|
values = val.map(&:to_sym) & source
|
30
|
-
res = self.send("#{options[:column]}=", values.map { |a| 2**source.index(a) }.
|
30
|
+
res = self.send("#{options[:column]}=", values.map { |a| 2**source.index(a) }.inject(:+))
|
31
31
|
instance_variable_set("@#{attr}", values)
|
32
32
|
end
|
33
33
|
|
@@ -22,38 +22,38 @@ describe ArrayBitMask do
|
|
22
22
|
|
23
23
|
it 'should store bit mask' do
|
24
24
|
subject.colors = [:red, :white]
|
25
|
-
subject.colors_mask.
|
25
|
+
expect(subject.colors_mask).to eq 9
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should restore array from bit mask' do
|
29
29
|
subject.colors_mask = 6
|
30
|
-
subject.colors.
|
30
|
+
expect(subject.colors).to match_array [:green, :black]
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should return empty array for zero mask' do
|
34
34
|
subject.colors_mask = 0
|
35
|
-
subject.colors.
|
35
|
+
expect(subject.colors).to eq []
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'should store array' do
|
39
39
|
subject.colors = []
|
40
|
-
subject.colors.
|
40
|
+
expect(subject.colors).to eq []
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'should return empty array for nil mask' do
|
44
44
|
subject.colors_mask = nil
|
45
|
-
subject.colors.
|
45
|
+
expect(subject.colors).to eq []
|
46
46
|
end
|
47
47
|
|
48
48
|
context 'source as array' do
|
49
49
|
it 'should store bit mask' do
|
50
50
|
subject.second_colors = [:red, :white]
|
51
|
-
subject.second_colors_mask.
|
51
|
+
expect(subject.second_colors_mask).to eq 9
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'should restore array from bit mask' do
|
55
55
|
subject.second_colors_mask = 6
|
56
|
-
subject.second_colors.
|
56
|
+
expect(subject.second_colors).to match_array [:green, :black]
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,64 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: array_bit_mask
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.0.3
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alex Leschenko
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-12-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
|
-
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
22
28
|
name: rake
|
23
29
|
requirement: !ruby/object:Gem::Requirement
|
24
30
|
requirements:
|
25
|
-
- -
|
31
|
+
- - ">="
|
26
32
|
- !ruby/object:Gem::Version
|
27
33
|
version: '0'
|
28
|
-
none: false
|
29
34
|
type: :development
|
30
|
-
|
35
|
+
prerelease: false
|
31
36
|
version_requirements: !ruby/object:Gem::Requirement
|
32
37
|
requirements:
|
33
|
-
- -
|
38
|
+
- - ">="
|
34
39
|
- !ruby/object:Gem::Version
|
35
40
|
version: '0'
|
36
|
-
|
37
|
-
prerelease: false
|
41
|
+
- !ruby/object:Gem::Dependency
|
38
42
|
name: rspec
|
39
43
|
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - ">="
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
|
-
none: false
|
45
48
|
type: :development
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
version_requirements: !ruby/object:Gem::Requirement
|
48
|
-
requirements:
|
49
|
-
- - ! '>='
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: '0'
|
52
|
-
none: false
|
53
49
|
prerelease: false
|
54
|
-
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
51
|
requirements:
|
57
|
-
- -
|
52
|
+
- - ">="
|
58
53
|
- !ruby/object:Gem::Version
|
59
54
|
version: '0'
|
60
|
-
none: false
|
61
|
-
type: :runtime
|
62
55
|
description: Creates methods that accepts array of values and save them as bit mask
|
63
56
|
extracted using specified source
|
64
57
|
email:
|
@@ -67,7 +60,7 @@ executables: []
|
|
67
60
|
extensions: []
|
68
61
|
extra_rdoc_files: []
|
69
62
|
files:
|
70
|
-
- .gitignore
|
63
|
+
- ".gitignore"
|
71
64
|
- Gemfile
|
72
65
|
- LICENSE.txt
|
73
66
|
- README.md
|
@@ -80,33 +73,26 @@ files:
|
|
80
73
|
- spec/spec_helper.rb
|
81
74
|
homepage: https://github.com/leschenko/array_bit_mask
|
82
75
|
licenses: []
|
76
|
+
metadata: {}
|
83
77
|
post_install_message:
|
84
78
|
rdoc_options: []
|
85
79
|
require_paths:
|
86
80
|
- lib
|
87
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
82
|
requirements:
|
89
|
-
- -
|
83
|
+
- - ">="
|
90
84
|
- !ruby/object:Gem::Version
|
91
85
|
version: '0'
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
hash: -2168014349249705125
|
95
|
-
none: false
|
96
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
87
|
requirements:
|
98
|
-
- -
|
88
|
+
- - ">="
|
99
89
|
- !ruby/object:Gem::Version
|
100
90
|
version: '0'
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
hash: -2168014349249705125
|
104
|
-
none: false
|
105
91
|
requirements: []
|
106
92
|
rubyforge_project:
|
107
|
-
rubygems_version:
|
93
|
+
rubygems_version: 2.4.3
|
108
94
|
signing_key:
|
109
|
-
specification_version:
|
95
|
+
specification_version: 4
|
110
96
|
summary: Generates bit mask for attribute from array of values
|
111
97
|
test_files:
|
112
98
|
- spec/array_bit_mask/bit_mask_spec.rb
|