hash_wia 0.7.2 → 0.7.3

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: b04e3c95e0dc2110c6d95ef47b4c516a687115a54afd7b70a53e3b154830d430
4
- data.tar.gz: 836ba57d4c12ba93887edee22185b8f375831deb490ea1d136115823ce0ba0f1
3
+ metadata.gz: bb0fdfd83e1409f99637fafa8d673cc64fd61865dfa798306f0422f748cd661b
4
+ data.tar.gz: 1c9947999bc89ffd071ce50d8bc3822d7540d438c6570bf33b45c86b58f10cc9
5
5
  SHA512:
6
- metadata.gz: 0ad0138042f331794ec9430f65b20a6a3519a1a5f6073f01ea654e4d0fffea009df09f80d71e2902ac165d490ae17bbf3d304ae2857b38a6bb40ffa3ca6bf83f
7
- data.tar.gz: 589607252b2e044ee2800d99bb0807fd2a50738bf164c58dc0d2a327e57029364b8972505ce6472729dd95082a36c5ccebf89c38015d10c8be78b99da280cd8a
6
+ metadata.gz: d28eada7847195d2ce9cdf0d40030af6b3396d2b71ae99e2f7d0587923768a2a72f3e0b3a4c1f35177e37b5ecff45c43a056f981d919b42568505932c27442a4
7
+ data.tar.gz: 061c43be03c32af497fc10ee587ef70840fde3e7c367c443211259d54fd791b37ca65a9ca065491b8508e7c3bad8649ce9e112c855e1e46804fb0e4755ffaff6
data/.version CHANGED
@@ -1 +1 @@
1
- 0.7.2
1
+ 0.7.3
@@ -1,4 +1,3 @@
1
1
  class HashWia < Hash
2
- STRUCTS = {}
3
2
  include HashWiaModule
4
3
  end
@@ -37,7 +37,7 @@ module HashWiaModule
37
37
  # key is common id direct access
38
38
  # allow direct get or fuction the same if name given
39
39
  def key name=nil
40
- name ? self[name] : self[:key]
40
+ name.nil? ? self[:key] : self[name.to_s]
41
41
  end
42
42
 
43
43
  # true clone of the hash with 0 references to the old one
@@ -67,9 +67,11 @@ module HashWiaModule
67
67
  if block
68
68
  # h.foo { rand }
69
69
  self[name] = block
70
- else
70
+ elsif !keys.include?(name.to_sym)
71
71
  # h.foo
72
- raise ArgumentError.new('%s not defined' % strname)
72
+ raise NoMethodError.new('%s not defined' % strname)
73
+ else
74
+ nil
73
75
  end
74
76
  else
75
77
  value
@@ -5,13 +5,16 @@ class Hash
5
5
  unless args.first
6
6
  HashWia.new self
7
7
  else
8
- list = args.flatten
9
- name = 'DynStruct_' + list.join('_')
10
- HashWia::STRUCTS[name] ||= ::Struct.new(name, *list)
8
+ list = args.flatten
9
+ extra = keys - list
11
10
 
12
- HashWia::STRUCTS[name].new.tap do |o|
13
- each do |k, v|
14
- o.send('%s=' % k, v) unless v.nil?
11
+ if extra.first
12
+ raise ArgumentError.new('Unallowed key/s: %s' % extra.map{ |_| ':%s' % _ }.join(', '))
13
+ end
14
+
15
+ HashWia.new.tap do |o|
16
+ list.each do |k|
17
+ o[k] = self[k]
15
18
  end
16
19
  end
17
20
  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.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dino Reic
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-27 00:00:00.000000000 Z
11
+ date: 2020-09-09 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
@@ -26,7 +26,7 @@ homepage: https://github.com/dux/hash_wia
26
26
  licenses:
27
27
  - MIT
28
28
  metadata: {}
29
- post_install_message:
29
+ post_install_message:
30
30
  rdoc_options: []
31
31
  require_paths:
32
32
  - lib
@@ -42,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
42
  version: '0'
43
43
  requirements: []
44
44
  rubygems_version: 3.0.6
45
- signing_key:
45
+ signing_key:
46
46
  specification_version: 4
47
47
  summary: Hash with indifferent access + goodies
48
48
  test_files: []