hash_wia 0.8.6 → 0.9.0

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: '0193d39da72201f6f4e995bae56c2e01f51db23a9a4cbd6113b4c014fd5cfef3'
4
+ data.tar.gz: 9e241c6b2ab16bfad6e6665ca34431e19fdc0595169677dd7dd3ad19695602aa
5
5
  SHA512:
6
- metadata.gz: 91e48b8aad3abee0e973fe78d56fd5a6a7d811fe83299b5d6c9fbce8abff00278b14e32f856119a7cf23ff180191855e212aaf8decb39eedbbfb008ef704337c
7
- data.tar.gz: 003357300a329843b5e96a3d71d6ba30db949ee8f387ceb17341827a2228c06d3deb56a9986dbdca88d990fad339816a53f4383ad2edc52618bca1ce634fd00c
6
+ metadata.gz: a2c166a225960e23fb8b3e39ba10512ff9ba7eadf72ed485ecfe2e325ee10c2365825a887dbdb7ce65818700d09cdc5094f59c94dfd36428c994094898c9769f
7
+ data.tar.gz: 3cb2eb4aa569a9eebbc1a0098230e7e3634a381a7fb09a2fae1748ab1d0c920e94b085d7c823702485e6d2a5c8fcfa3b72b1acb32621226a56e771631d31662f
data/.version CHANGED
@@ -1 +1 @@
1
- 0.8.6
1
+ 0.9.0
@@ -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
@@ -1,5 +1,5 @@
1
1
  module HashWiaModule
2
- def initialize hash=nil
2
+ def initialize hash = nil
3
3
  if hash
4
4
  hash.each { |k,v| self[k] = v }
5
5
  end
@@ -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
@@ -89,6 +82,12 @@ module HashWiaModule
89
82
  root
90
83
  end
91
84
 
85
+ def values
86
+ super.map do |el|
87
+ el.class == Hash ? HashWia.new(el) : el
88
+ end
89
+ end
90
+
92
91
  def method_missing name, *args, &block
93
92
  strname = name.to_s
94
93
 
@@ -113,7 +112,13 @@ module HashWiaModule
113
112
  end
114
113
  end
115
114
  else
116
- value
115
+ case value
116
+ when Array
117
+ # if we return list oh hashes, convert it to hwia
118
+ value.map {|el| el.class == Hash ? HashWia.new(el) : el }
119
+ else
120
+ value
121
+ end
117
122
  end
118
123
  end
119
124
  end
@@ -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,13 @@
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.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dino Reic
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-02-17 00:00:00.000000000 Z
10
+ date: 2025-02-21 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: Gem provides simple access to common Ruby hash types bundled in one simple
14
13
  class
@@ -26,7 +25,6 @@ homepage: https://github.com/dux/hash_wia
26
25
  licenses:
27
26
  - MIT
28
27
  metadata: {}
29
- post_install_message:
30
28
  rdoc_options: []
31
29
  require_paths:
32
30
  - lib
@@ -41,8 +39,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
41
39
  - !ruby/object:Gem::Version
42
40
  version: '0'
43
41
  requirements: []
44
- rubygems_version: 3.4.10
45
- signing_key:
42
+ rubygems_version: 3.6.4
46
43
  specification_version: 4
47
44
  summary: Hash with indifferent access + goodies
48
45
  test_files: []