inprovise 0.2.9 → 0.2.10

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZGIxYjZiN2VkYTY2OTEwNjVjMDg3OTBiMmUyYzM4YzVmZTZlZmIxMQ==
4
+ MmQ4NGYyYzAzM2U3NGJlY2EzMDFlMjU1OGJiYzdlMmQ2YjJkMzZmZA==
5
5
  data.tar.gz: !binary |-
6
- NWRjZTgzZTY1ZGEzN2NiZTU2NWRjYTBkODIxNzA0YTA5MGQxMTVjNg==
6
+ NjFhYmFkMDI1NTFiZjExOTJiMzBhODhlYjdmYjBlYzQwZmNjZTFlMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- N2I3Yzc5M2ZlOGVjZTJmMDUzNjcxODRhZWIwNjk3OTg0YjUwMzM2Y2EwZWI0
10
- OGI0ZDQzNzBmZjU5YzBkNzZiN2ZhMGRlNzkxMDZlNDM0NzhlMTg3NjZiOWJj
11
- YzIyMzcwODEyY2I2NWIzNDAwMzg0YTJmYzA3YzU3YTdhMjJjMDc=
9
+ OWQ2NTFhYzk5OGYzODkyZDA0ODA4ZmMxMTc0MTVlMjFmN2VkYTUxYTIzNGI5
10
+ ZmVkNjFhZDY2MjFhNzZjNzQxMWE5MTY4YTE2ZjI4NzZhOWNjNjdiNDE5MDUx
11
+ YjFjNzk2OTQ3YzA3Mzg2YTYyYTY0YTM2Yzg5Nzc5YmRmYTdjMDM=
12
12
  data.tar.gz: !binary |-
13
- ZTg4ZTc3MTA1Y2NkMDkwODE2YWNmMjdjZWQzYjQzNTY4ZjZkZTdjMDNiMDNk
14
- ZjFiY2QwOWQ5OGNiOWM5ZTkwNWQ2MTQ1MjNiOGQ0ZGIwZGQ2Yzg2OGNjMTkz
15
- MmY3Y2VkNjQwOWI5NWU1YjVlYzZkZjM2M2YwYTkwYzQ0MDI4MTY=
13
+ OWUwN2ZkNDk4NTYzNDljNThkMDgwNjEzZDVmMTY4Y2RmZTg2YTA2ODdhODAy
14
+ NWRmY2E1OWJjMjg4MzZjMTQxMzkzYmMwOGVmNDUxOTc4ZTUxYzQ3MmU0NjBk
15
+ ZmEzMjhlM2Y4ODljMjIyZjFhNDVkZjEzZWY3ZmVjNjYxNmVkZDE=
@@ -7,29 +7,41 @@ class Inprovise::Config
7
7
 
8
8
  def initialize(other=nil)
9
9
  @table = {}
10
- copy!(other.to_h) if other
10
+ copy!(other) if other
11
11
  end
12
12
 
13
- def _k_(key)
14
- Symbol === key ? key : key.to_s.to_sym
15
- end
16
- private :_k_
17
-
18
13
  def _v_(val)
19
14
  Hash === val ? self.class.new.merge!(val) : val
20
15
  end
21
16
  private :_v_
22
17
 
18
+ def get(key)
19
+ Symbol === key ? @table[key] : key.to_s.split('.').reduce(@table) { |t,k| t[k.to_sym] ||= self.class.new }
20
+ end
21
+
22
+ def set(key, val)
23
+ if Symbol === key
24
+ @table[key] = _v_(val)
25
+ else
26
+ vk = (path = key.to_s.split('.')).pop
27
+ path.reduce(@table) { |t,k| t[k.to_sym] ||= self.class.new }[vk.to_sym] = _v_(val)
28
+ end
29
+ end
30
+
23
31
  def [](key)
24
- @table[_k_(key)]
32
+ get(key)
25
33
  end
26
34
 
27
35
  def []=(key, val)
28
- @table[_k_(key)] = _v_(val)
36
+ set(key, val)
29
37
  end
30
38
 
31
39
  def has_key?(key)
32
- @table.has_key?(_k_(key))
40
+ if Symbol === key
41
+ @table.has_key?(key)
42
+ else
43
+ !(key.to_s.split('.').reduce(@table) { |t,k| t && t.has_key?(k.to_sym) && self.class === t[k.to_sym] ? t[k.to_sym] : nil }).nil?
44
+ end
33
45
  end
34
46
 
35
47
  def empty?
@@ -80,12 +92,15 @@ class Inprovise::Config
80
92
  end
81
93
 
82
94
  def to_h
83
- @table
95
+ @table.reduce({}) do |hsh, (k,v)|
96
+ hsh[k] = self.class === v ? v.to_h : v
97
+ hsh
98
+ end
84
99
  end
85
100
 
86
101
  def method_missing(method, *args)
87
102
  if /(.*)=$/ =~ method.to_s
88
- self[$1] = (args.size > 1 ? args : args.shift)
103
+ self[$1.to_sym] = (args.size > 1 ? args : args.shift)
89
104
  else
90
105
  self[method]
91
106
  end
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Inprovise
7
7
 
8
- VERSION = '0.2.9'
8
+ VERSION = '0.2.10'
9
9
 
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inprovise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Corino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-12 00:00:00.000000000 Z
11
+ date: 2016-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored