bit_flag 0.1.1 → 0.2.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
  SHA256:
3
- metadata.gz: 6eb5ee39e26f9bff07ae24dec21e758853cb3e8b9e55b65252847d871ca080f9
4
- data.tar.gz: 23796624b75b4742e8ed1d1a69fcca42327abd663895785d6f0b317119d0a730
3
+ metadata.gz: 8ac9475d495b5fda77ca9b13630144880a120a16eb81d1361ac114cbfc8c1d46
4
+ data.tar.gz: a8c4b50388f46197b42f5b040fe69d57fe9ef71401e11d5ad2bce7224a4e239d
5
5
  SHA512:
6
- metadata.gz: 2eafc7d1dc90a85417765be4fdd76a0b34f46e07d2b3c6500630c329902e174681090849ed064bada39cdf5273e62c34172ffca46ea9f25c26820c8e06ba5740
7
- data.tar.gz: 9527808cabc3c536d2ea0778cd1d621554bfbe19b0983954931818cd442615a3d856773aae3f36eb5ef738956da45cfda09464a57d2e961311de0088c02ca87c
6
+ metadata.gz: 10ec3c31c7c79b0abf46768fcf9bb3de5ae621472c5011d3c90e15e3cacfe636402ec01349b290559ce5982cfb29bc75987c49a0924aa6223bcd6881d0783b08
7
+ data.tar.gz: c8a64f058a9750a8b2a6eee223c4cf276a77ddd7d18b6cff955668565c28594f758b55748156e0705e8801791d5b47324bec0d52670f9c296bc8149c1000598b
checksums.yaml.gz.sig ADDED
Binary file
data/lib/bit_flag.rb CHANGED
@@ -1,26 +1,38 @@
1
1
  class BitFlag
2
- def self.make_flags(flags_list)
3
- Array(flags_list)
4
- .each_with_index
5
- .to_h { |flag, index| [flag, 1 << index] }
2
+ def self.from_array(flag_list, initial_value = 0)
3
+ BitFlag.new(make_flags(flag_list), initial_value)
6
4
  end
7
5
 
8
- def initialize(flags, flags_list)
9
- @flags_list = flags_list
10
- @flags = flags
6
+ def self.make_flags(flag_list)
7
+ hash =
8
+ Array(flag_list)
9
+ .each_with_index
10
+ .to_h { |flag, index| [flag, 1 << index] }
11
+ hash.default = 0
12
+ hash
11
13
  end
12
14
 
13
- def add(flag)
14
- @flags = @flags | @flags_list[flag]
15
+ def initialize(flag_list, initial_value = 0)
16
+ @flag_list = flag_list
17
+ @flags = 0
18
+ @flags = initial_value.is_a?(Array) ? add(initial_value) : initial_value
19
+ end
20
+
21
+ def add(flags)
22
+ @flags = Array(flags).reduce(@flags) { |acc, flag| acc | @flag_list[flag] }
15
23
  end
16
24
 
17
25
  def has?(flags)
18
26
  Array(flags)
19
- .map { |flag| @flags_list[flag] }
27
+ .map { |flag| @flag_list[flag] }
20
28
  .all? { |flag| (@flags | flag) == @flags }
21
29
  end
22
30
 
23
- def remove(flag)
24
- @flags = @flags & ~@flags_list[flag]
31
+ def remove(flags)
32
+ @flags = Array(flags).reduce(@flags) { |acc, flag| acc & ~@flag_list[flag] }
33
+ end
34
+
35
+ def value_of
36
+ @flags
25
37
  end
26
38
  end
data.tar.gz.sig ADDED
@@ -0,0 +1 @@
1
+ _Ȭ�//��Q6WM3�j�V�i��5&?ϰ����VO9�\Al�!$���o �
metadata CHANGED
@@ -1,26 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bit_flag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SavagePixie
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2022-06-17 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEkjCCAvqgAwIBAgIBATANBgkqhkiG9w0BAQsFADBHMRQwEgYDVQQDDAtzYXZh
14
+ Z2VwaXhpZTEaMBgGCgmSJomT8ixkARkWCnByb3Rvbm1haWwxEzARBgoJkiaJk/Is
15
+ ZAEZFgNjb20wHhcNMjIwNjE4MDcwOTE0WhcNMjMwNjE4MDcwOTE0WjBHMRQwEgYD
16
+ VQQDDAtzYXZhZ2VwaXhpZTEaMBgGCgmSJomT8ixkARkWCnByb3Rvbm1haWwxEzAR
17
+ BgoJkiaJk/IsZAEZFgNjb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIB
18
+ gQDO/A0ZiQbyS1sXv2OuKo8l1IdTnCxNlM46MBaA4tlVUjtwqLuObVSIJqRlkmd7
19
+ Yjz23rcmqMSFehTuhN7pUG6tvWx4zcLgT71kC9/dOvFg/l1kGIKxnGKx5XxjMX3K
20
+ /jPVc5XIYslAVDIjnqdkIWbVduzGIdR9gZfaijtz7vfBniQPKSb3VLoEgonWuHT0
21
+ y/oB7rh0wFhruL1l3+e2a8kGCkewueVh6bq4+vLkN1eEAmJ2HChL/ah08oG9+4Ii
22
+ QctSr2tvVu7BvpawOmMU1yPm3ST1aRWW/n5G8n9yBqffcqc78bUqTH1A12OXAYuy
23
+ GDAch/yp2KVk1vsYAMbFjO0bsFJAYFCmBMQMGF5YB7Tyk6kAFExXxAMDVTXefIYU
24
+ iPkAiD6xMTdXNbi50bRV6r+jBh5vxrGfz8yPIJslLvTyMY+25YcN7fmA98QyfRSB
25
+ Uo5Ta+NhS8/PSXSJdVbe7th2ro1eibPiX3d8Y6FsFUDAfFWjq6v3BRW4lV9Hq3q+
26
+ Cm0CAwEAAaOBiDCBhTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
27
+ lH70w2iQuq20y+aJ9w4jZNYNqT4wJQYDVR0RBB4wHIEac2F2YWdlcGl4aWVAcHJv
28
+ dG9ubWFpbC5jb20wJQYDVR0SBB4wHIEac2F2YWdlcGl4aWVAcHJvdG9ubWFpbC5j
29
+ b20wDQYJKoZIhvcNAQELBQADggGBADFC5YJfygJSjUGAbbm/WD8Yk22/dAP5nVuE
30
+ 8t3Tfe7djhpkx/CvnGjoSKZJHP+5fo38TXtpGaQjOKqlpRV6TI5X3+WQ7NvvCrRf
31
+ zdABsbmCc293yAF538OhUlJFDOsFzrF8E/o804GC1HffHI2RjLDfYEJV0hHldjak
32
+ +njUz9YQP8Gkrn7PHl6BN1GcKd+PdP5TygLl68dE978xtEoAzsX0gbjXyK0Q0w9W
33
+ tQqMwlBTwQ4xZix1GNWwj/+iwfzstVyqkhlLZVyxtdKSTYMlfKwicqS9MRSgsdka
34
+ nFppm/edgzsyWUsYTxp385E/UVFbUJLnwCdwCklVLVyf2LLI/SnklbHzIzM37TnL
35
+ Gmv8zvjPh2ytJfXH7SE7tdtJKnYo/R89iXu6tlSW1Ic1MSiO+klWxnNAGguslbSu
36
+ K6asxcgTV4QtFz5x34774dI4sCGYwXZrGMkq2msDZArGrtkAQcy8NfcDuXKbNZpU
37
+ sOseBccVsuNGBF697/8Vytn4yQpjzA==
38
+ -----END CERTIFICATE-----
39
+ date: 2022-06-18 00:00:00.000000000 Z
12
40
  dependencies: []
13
- description: Gem to create and manage bit flags.
41
+ description: 'BitFlag provides an api to easily generate and manage bit flags.
42
+
43
+ '
14
44
  email: savagepixie@protonmail.com
15
45
  executables: []
16
46
  extensions: []
17
47
  extra_rdoc_files: []
18
48
  files:
19
49
  - lib/bit_flag.rb
20
- homepage: https://rubygems.org/gems/bit_flag
50
+ homepage: https://gitlab.com/SavagePixie/bit-flag
21
51
  licenses:
22
52
  - MIT
23
- metadata: {}
53
+ metadata:
54
+ bug_tracker_uri: https://gitlab.com/SavagePixie/bit-flag/-/issues
55
+ source_code_uri: https://gitlab.com/SavagePixie/bit-flag
24
56
  post_install_message:
25
57
  rdoc_options: []
26
58
  require_paths:
metadata.gz.sig ADDED
Binary file