hash_wia 0.8.6 → 0.8.7

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: 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