gonfic 0.7.2 → 0.8.0

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: 8f9ed08a92eaed71218c33c3e5fa10256d9db9e984abd4244adddb7a5cbb9928
4
- data.tar.gz: e8c9c7f7e11a2babfe8cc2da87043ca33013a064b5e364f331964d7d3dad037c
3
+ metadata.gz: 9625ccea4705117429f2e8dcd26dfff874b7bbd4d4048066f11c211a5cb3ceda
4
+ data.tar.gz: 9fa059cdc03712e05aabe4640800aca11779f79d31b8af2ed54ebae5401b7a05
5
5
  SHA512:
6
- metadata.gz: 910e44d9e5b19c6868bf0d34ad4d3395307987d316b70b2f20de27f97ed6e794cdd3860458af50f4397a131d1441cc1c03693393d72c218a56d9678ddbd191b9
7
- data.tar.gz: ddd57eeb63957aca9017ae1ac578516095d5fbe4ede40686a8d2790495cbb613be3718176f6d26e3a216119ea90e2eabf0ed0faa0d66ced70ef6ed310ac7985b
6
+ metadata.gz: '086d1c383cec53d12b65e119775d71888ff296e01499132d3fef0037e2a78b5f8c334b67e7be8e7d64bf7d15cc8f578ab11901b4af83de7ca33aad7178335bbd'
7
+ data.tar.gz: 79d172024364ebcba9479e7f468150bfa66dad91d1fe5f7e8798cd0e5fa1521a2dd189a5b235bfaa804ffb54fed22192125e2742db5606719dc493139a1cb7d8
@@ -4,13 +4,27 @@ module Gonfic
4
4
  def self.extract_variables_from_env(prefix:, defaults:)
5
5
  extracted = {}
6
6
 
7
- defaults.each_key do |key_name|
8
- extract_variable(prefix: prefix, key_name: key_name, into: extracted)
7
+ linearize_keys(defaults).each do |key_path|
8
+ extract_variable(prefix: prefix, key_path: key_path, into: extracted)
9
9
  end
10
10
 
11
11
  extracted
12
12
  end
13
13
 
14
+ def self.linearize_keys(hash, parents: [])
15
+ linear = []
16
+
17
+ hash.each do |k, v|
18
+ if v.is_a?(Hash)
19
+ linear += linearize_keys(v, parents: parents + [k])
20
+ else
21
+ linear << (parents + [k])
22
+ end
23
+ end
24
+
25
+ linear
26
+ end
27
+
14
28
  def self.env_prefix_from_filename(filename)
15
29
  return nil unless filename
16
30
 
@@ -19,18 +33,18 @@ module Gonfic
19
33
  "#{converted}_"
20
34
  end
21
35
 
22
- def self.upcase_and_simplify(sym)
23
- sym
24
- .to_s
25
- .gsub(/[^\w]+/, '_')
26
- .delete_prefix('_')
27
- .delete_suffix('_')
28
- .upcase
36
+ def self.upcase_and_simplify(*key_path)
37
+ key_path.map do |key|
38
+ key.to_s.gsub(/[^\w]+/, '_').delete_prefix('_').delete_suffix('_')
39
+ end.join('__').upcase
29
40
  end
30
41
 
31
- def self.extract_variable(prefix:, key_name:, into:)
32
- env_var_name = prefix + upcase_and_simplify(key_name)
33
- into[key_name] = env.fetch(env_var_name) if env.key?(env_var_name)
42
+ def self.extract_variable(prefix:, key_path:, into:)
43
+ env_var_name = prefix + upcase_and_simplify(*key_path)
44
+ return unless env.key?(env_var_name)
45
+
46
+ into = into[key_path.shift] ||= {} while key_path.length > 1
47
+ into[key_path.last] = env.fetch(env_var_name)
34
48
  end
35
49
 
36
50
  def self.env
@@ -1,3 +1,3 @@
1
1
  module Gonfic
2
- VERSION = '0.7.2'.freeze
2
+ VERSION = '0.8.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gonfic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Chludziński