hash_wia 0.7.6 → 0.7.10

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
  SHA256:
3
- metadata.gz: 3533e491e9ea4ae635d75064e8a75d89532188562ba0788426f3f02d6636cdc2
4
- data.tar.gz: 1e24d94651e45b89a41ade9f893ebd3f2f8c760ff84ee5eea55c2f0733a62138
3
+ metadata.gz: 0fd200af4b01f8eabfa004bafa4a92c274962e0a6ade0c7b3d7dc0ff49396c73
4
+ data.tar.gz: 1eb4b59584a15634516af1675a9a2e98b8fe1d8daf26d356638625b0371db856
5
5
  SHA512:
6
- metadata.gz: dc78b6cfa5c6620a41a8c455aa4c7df057d3c2ae3b70b8279381825a1b9d82da38d2cfa49020b00b13ba43d9b9336737902f66ca33e7b8c58f09936578bee366
7
- data.tar.gz: f6030a43d761182ea740d35484c5da7574a70a6f8e372638bc0c8cd1ff0e89fef9ea7f83f41d39859efa820d9f14af640621dc2fa433863e617a2923cc34d5f0
6
+ metadata.gz: efd58d2868f48cc3fe3c97bb20c9bfda3b8a3e81e74a8c8c3e07185cefe6352389980b88eaf20359d7b2bc3c0819bec6b56765095c7ebafa8896a3522d5e4a29
7
+ data.tar.gz: 7e3832ad1aaa7178bfeb153171490933a166c18cbba7a1d8036baf748d31e5cccb47c653c48f3a7572173ec4de0a9140a409a87339624ca9e42f7b3ba9f0dd75
data/.version CHANGED
@@ -1 +1,2 @@
1
- 0.7.6
1
+ 0.7.10
2
+
@@ -1,3 +1,50 @@
1
1
  class HashWia < Hash
2
2
  include HashWiaModule
3
3
  end
4
+
5
+ class HashWia
6
+ class NamedOptions
7
+ def initialize hash
8
+ @hash = hash
9
+ end
10
+
11
+ def set constant, code, name
12
+ @hash[constant.to_s] = code
13
+ @hash[code] = name.to_s
14
+ end
15
+
16
+ def method_missing code, key_val
17
+ self.set code, key_val.keys.first, key_val.values.first
18
+ end
19
+ end
20
+ end
21
+
22
+ # to create Task::STATUS and Task.status
23
+ # HashWia self, :status do |opt|
24
+ #
25
+ # or just to get a hash
26
+ # HashWia do |opt|
27
+ # opt.DONE d: 'Done'
28
+ # # or
29
+ # opt.set 'DONE', :d, 'Done'
30
+ # end
31
+ def HashWia klass = nil, name = nil, opts = nil
32
+ if block_given?
33
+ hash = HashWia.new
34
+
35
+ if name
36
+ if !opts || opts[:constant] != false
37
+ constant = name.to_s.upcase
38
+ klass.const_set constant, hash
39
+ end
40
+
41
+ klass.define_singleton_method(name) { klass.const_get(constant) }
42
+ end
43
+
44
+ named_opts = HashWia::NamedOptions.new hash
45
+ yield named_opts
46
+ hash
47
+ else
48
+ raise ArgumentError, 'Block not provided'
49
+ end
50
+ end
@@ -27,7 +27,7 @@ module HashWiaModule
27
27
 
28
28
  def []= key, value
29
29
  if @frozen_keys
30
- raise NoMethodError, "Hash keys are frozen and can't be modified"
30
+ raise NoMethodError, "HashWia keys are frozen and can't be modified"
31
31
  end
32
32
 
33
33
  delete key
@@ -16,6 +16,8 @@ class Hash
16
16
  list.each do |k|
17
17
  o[k] = self[k]
18
18
  end
19
+
20
+ o.freeze_keys!
19
21
  end
20
22
  end
21
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_wia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dino Reic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-31 00:00:00.000000000 Z
11
+ date: 2022-02-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Gem provides simple access to common Ruby hash types bundled in one simple
14
14
  class