hash_wia 0.7.7 → 0.7.11

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: afe16ea4e4d8f3fdb8aeb049db4b22841a5b3ac195dd8fe017d6c48dca229de6
4
- data.tar.gz: 46633e2df0827031dbafdbb8ad335975329d2c876c1209b21a2ec98c15ec10d2
3
+ metadata.gz: 8bf5ff2ab4b6c12a86f31caafd3670c6ad3c07567287dcc8e57c50a246408f73
4
+ data.tar.gz: 0cff132684a6c98ad476441c0cf4a426c3f495186bb0aeb481c65e77a74d7fb8
5
5
  SHA512:
6
- metadata.gz: 6563528dd2841ce621639b3c2d96b29d8299d9ec335f99d83b647d91e421c5192d9ffd3eaa0748c217e34219ac6a57844f284d345fd9d4e019341f0abf49e849
7
- data.tar.gz: 4517ab23a0a7d2246483f16037dfe949a6264a73ce8e82ec3136651083402bfe8dfec468c72bc7b4cf782cba53e5fe4a4fbecacd1b8970b3b3654997f8c302f2
6
+ metadata.gz: a4d39fd26f2a770e6009e52a5ec9ad53663223eead31ac647fa29e778419282d0e860627440e57470e7ced9a5dcb2e60952e9c56662206d856746bb4838fb55c
7
+ data.tar.gz: aa616df53c134ed5a34541e813ca69ae5a2567120999002be98d9a88954d2812238e0726e9040408a930b7eafa09fae5179e598b16159f1b1d749629cf050014
data/.version CHANGED
@@ -1 +1,2 @@
1
- 0.7.7
1
+ 0.7.11
2
+
@@ -8,18 +8,13 @@ class HashWia
8
8
  @hash = hash
9
9
  end
10
10
 
11
- def set code, constant, name = nil
12
- unless name
13
- name = constant.keys.first
14
- constant = constant.values.first
15
- end
16
-
17
- @hash[code.to_s] = name.to_s
18
- @hash[constant.to_s] = code.to_s
11
+ def set constant, code, name
12
+ @hash[constant.to_s] = code
13
+ @hash[code] = name.to_s
19
14
  end
20
15
 
21
- def method_missing code, *args
22
- self.set code, *args
16
+ def method_missing code, key_val
17
+ self.set code, key_val.keys.first, key_val.values.first
23
18
  end
24
19
  end
25
20
  end
@@ -31,15 +26,18 @@ end
31
26
  # HashWia do |opt|
32
27
  # opt.DONE d: 'Done'
33
28
  # # or
34
- # opt.DONE :d, 'Done'
29
+ # opt.set 'DONE', :d, 'Done'
35
30
  # end
36
- def HashWia klass = nil, name = nil
31
+ def HashWia klass = nil, name = nil, opts = nil
37
32
  if block_given?
38
33
  hash = HashWia.new
39
34
 
40
35
  if name
41
- constant = name.to_s.upcase
42
- klass.const_set constant, hash
36
+ if !opts || opts[:constant] != false
37
+ constant = name.to_s.upcase
38
+ klass.const_set constant, hash
39
+ end
40
+
43
41
  klass.define_singleton_method(name) { klass.const_get(constant) }
44
42
  end
45
43
 
@@ -26,8 +26,8 @@ module HashWiaModule
26
26
  end
27
27
 
28
28
  def []= key, value
29
- if @frozen_keys
30
- raise NoMethodError, "Hash keys are frozen and can't be modified"
29
+ if @frozen_keys && !keys.include?(key)
30
+ raise NoMethodError, "HashWia keys are frozen and can't be modified (key: #{key})"
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.7
4
+ version: 0.7.11
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-02-05 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