hash_wia 0.8.6 → 0.8.7

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: 38006945ea37efb106b9d3b79f504233798c944c0b84e42b995cefcce7226615
4
- data.tar.gz: 2e077dedc656da9dbb644f45336027184566f3bee36866ee185cf44462d0f6ba
3
+ metadata.gz: c4ab36dc996cbf145ed0952ed9e868362d7f33f81b56db07948b262bd68a5862
4
+ data.tar.gz: b97294a77516cafdfaac335444146c1711486093e21445854b3dd04604d5efef
5
5
  SHA512:
6
- metadata.gz: 91e48b8aad3abee0e973fe78d56fd5a6a7d811fe83299b5d6c9fbce8abff00278b14e32f856119a7cf23ff180191855e212aaf8decb39eedbbfb008ef704337c
7
- data.tar.gz: 003357300a329843b5e96a3d71d6ba30db949ee8f387ceb17341827a2228c06d3deb56a9986dbdca88d990fad339816a53f4383ad2edc52618bca1ce634fd00c
6
+ metadata.gz: cb414e0b445a2aba50089eeede332280025684c7bd13eae14a400c0bf774435616afd5195a92ad65a7f767213cc000339d6a414c76c070cd8588a7b5b3a455c3
7
+ data.tar.gz: 43a5d3d2a62d63d56a1f9484bd24d05929edd36fc883e85b9b86d65f03a268f572a39ba679756d8546d36aeb5186f94a3b1b5a5e4414acd6712feb3b6cb9bcad
data/.version CHANGED
@@ -1 +1 @@
1
- 0.8.6
1
+ 0.8.7
@@ -3,6 +3,8 @@ class HashWia < Hash
3
3
  end
4
4
 
5
5
  class HashWia
6
+ STRUCTS = {}
7
+
6
8
  class NamedOptions
7
9
  def initialize hash, &block
8
10
  @hash = hash
@@ -13,17 +13,10 @@ module HashWiaModule
13
13
  end
14
14
 
15
15
  def [] key
16
- data = super(key)
17
- skey = key.to_s
18
- data = super(skey) if data.nil?
19
- data = super(skey.to_sym) if data.nil? && key.class != Symbol
20
-
21
- if data.is_a?(Hash)
22
- data.extend HashWiaModule
23
- data
24
- else
25
- data
26
- end
16
+ key = key.to_s unless key.respond_to?(:to_sym)
17
+ data = super(key.to_s) || super(key.to_sym)
18
+ data.extend HashWiaModule if data.is_a?(Hash)
19
+ data
27
20
  end
28
21
 
29
22
  def []= key, value
@@ -5,19 +5,10 @@ class Hash
5
5
  if args.first.nil?
6
6
  HashWia.new self
7
7
  else
8
- list = args.map(&:to_s).flatten
9
- extra = keys.map(&:to_s) - list
10
-
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]
18
- o[k] = self[k.to_sym] if o[k].nil?
19
- end
20
- end
8
+ list = args.flatten
9
+ name = 'DynStruct_' + list.join('_')
10
+ HashWia::STRUCTS[name] ||= ::Struct.new(name, *list)
11
+ HashWia::STRUCTS[name].new **self
21
12
  end
22
13
  end
23
14
  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.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dino Reic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-17 00:00:00.000000000 Z
11
+ date: 2024-02-25 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