complex_config 0.21.2 → 0.22.1
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 +4 -4
- data/CHANGES.md +24 -0
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/complex_config.gemspec +4 -5
- data/lib/complex_config/settings.rb +5 -1
- data/lib/complex_config/tree.rb +16 -3
- data/lib/complex_config/version.rb +1 -1
- data/spec/complex_config/config_spec.rb +0 -1
- data/spec/complex_config/plugins_spec.rb +0 -1
- data/spec/complex_config/settings_spec.rb +34 -6
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d25e925267a755f28ea324b3ed2f43d737659124e097ae52ac48bd87aedd9173
|
4
|
+
data.tar.gz: f68858a3bba577915b3d602093363f1143b29be84cfe42f4ac4c64056baa5551
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9cb2d7480057aa2685952e8c272c8a10245664c0e30fbdf83d76c1fd5c2ff196eb84bec265baa5fae19283acdcb9efd5c25e90721e40df4fe185fa5c2273bf9
|
7
|
+
data.tar.gz: 463827352c5df8655b58ea371c57733b78aa2a00ca28ac0e77516cb2b7edaf43919f5b5c93cf27e32d3add7d8eec53b8204af9b862871ba3d9a0037220ce34ae
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 2024-09-22 v0.22.1
|
4
|
+
|
5
|
+
#### Bug Fixes and Improvements
|
6
|
+
|
7
|
+
* Refactor ComplexConfig settings and specs to handle nil values:
|
8
|
+
* Added `nil` handling in `ComplexConfig::Settings`
|
9
|
+
* Updated `settings_spec.rb` to test for `nil` values
|
10
|
+
* Update dependencies and date in gemspec files:
|
11
|
+
- Removed development dependency `'utils'` from Rakefile.
|
12
|
+
- Updated date in `complex_config.gemspec` from "2024-09-13" to "2024-09-22"
|
13
|
+
|
14
|
+
* Bumped version to **0.22.1**:
|
15
|
+
- Updated `VERSION` in `lib/complex_config/version.rb` from **0.22.0** to **0.22.1**
|
16
|
+
- Updated `s.version` in `complex_config.gemspec` from **0.22.0** to **0.22.1**
|
17
|
+
- Updated gem stub version in `complex_config.gemspec` from **0.22.0** to **0.22.1**
|
18
|
+
|
19
|
+
## 2024-09-12 v0.22.0
|
20
|
+
|
21
|
+
* **New Feature: UTF-8 Support**
|
22
|
+
+ Added `utf8` parameter to `Tree#initialize`
|
23
|
+
+ Introduced `default_utf8` method to determine default encoding based on environment variables
|
24
|
+
+ Modified `inner_child_prefix` and `last_child_prefix` methods for UTF-8 and ASCII encodings
|
25
|
+
+ Updated tests in `spec/complex_config/settings_spec.rb`
|
26
|
+
|
3
27
|
## 2024-09-09 v0.21.2
|
4
28
|
|
5
29
|
* **Settings List Method**:
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.22.1
|
data/complex_config.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: complex_config 0.
|
2
|
+
# stub: complex_config 0.22.1 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "complex_config".freeze
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.22.1".freeze
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2024-09-
|
11
|
+
s.date = "2024-09-22"
|
12
12
|
s.description = "This library allows you to access configuration files via a simple interface".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
14
|
s.executables = ["complex_config".freeze]
|
@@ -23,12 +23,11 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.specification_version = 4
|
25
25
|
|
26
|
-
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.17.
|
26
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.17.1".freeze])
|
27
27
|
s.add_development_dependency(%q<rake>.freeze, [">= 0".freeze])
|
28
28
|
s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
|
29
29
|
s.add_development_dependency(%q<rspec>.freeze, [">= 0".freeze])
|
30
30
|
s.add_development_dependency(%q<monetize>.freeze, [">= 0".freeze])
|
31
|
-
s.add_development_dependency(%q<utils>.freeze, [">= 0".freeze])
|
32
31
|
s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
|
33
32
|
s.add_runtime_dependency(%q<json>.freeze, [">= 0".freeze])
|
34
33
|
s.add_runtime_dependency(%q<tins>.freeze, [">= 0".freeze])
|
@@ -104,7 +104,11 @@ class ComplexConfig::Settings < BasicObject
|
|
104
104
|
if ::Array === v
|
105
105
|
v.to_ary.map { |x| (x.ask_and_send(:to_h) rescue x) || x }
|
106
106
|
elsif v.respond_to?(:to_h)
|
107
|
-
v.
|
107
|
+
if v.nil?
|
108
|
+
nil
|
109
|
+
else
|
110
|
+
v.ask_and_send(:to_h) rescue v
|
111
|
+
end
|
108
112
|
else
|
109
113
|
v
|
110
114
|
end
|
data/lib/complex_config/tree.rb
CHANGED
@@ -25,19 +25,32 @@ module ComplexConfig
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def initialize(name)
|
28
|
+
def initialize(name, utf8: default_utf8)
|
29
29
|
@name = name
|
30
|
+
@utf8 = utf8
|
30
31
|
@children = []
|
31
32
|
end
|
32
33
|
|
34
|
+
def default_utf8
|
35
|
+
!!(ENV['LANG'] =~ /utf-8\z/i)
|
36
|
+
end
|
37
|
+
|
33
38
|
private
|
34
39
|
|
35
40
|
def inner_child_prefix(i)
|
36
|
-
|
41
|
+
if @utf8
|
42
|
+
i.zero? ? "├─ " : "│ "
|
43
|
+
else
|
44
|
+
i.zero? ? "+- " : "| "
|
45
|
+
end
|
37
46
|
end
|
38
47
|
|
39
48
|
def last_child_prefix(i)
|
40
|
-
|
49
|
+
if @utf8
|
50
|
+
i.zero? ? "└─ " : " "
|
51
|
+
else
|
52
|
+
i.zero? ? "`- " : " "
|
53
|
+
end
|
41
54
|
end
|
42
55
|
|
43
56
|
public
|
@@ -6,13 +6,21 @@ RSpec.describe ComplexConfig::Settings do
|
|
6
6
|
allow(ComplexConfig::Provider.instance).to receive(:plugins).and_return([])
|
7
7
|
end
|
8
8
|
|
9
|
+
around do |example|
|
10
|
+
old_locale, ENV['LOCAL'] = 'en_US.UTF-8', ENV['LANG']
|
11
|
+
example.run
|
12
|
+
ensure
|
13
|
+
ENV['LOCAL'] = old_locale
|
14
|
+
end
|
15
|
+
|
9
16
|
let :settings do
|
10
17
|
obj = described_class[
|
11
18
|
foo: {
|
12
19
|
bar: {
|
13
20
|
baz: true
|
14
21
|
},
|
15
|
-
|
22
|
+
nix: nil,
|
23
|
+
qux: 'quux',
|
16
24
|
}
|
17
25
|
]
|
18
26
|
obj.name_prefix = 'root'
|
@@ -62,7 +70,7 @@ RSpec.describe ComplexConfig::Settings do
|
|
62
70
|
end
|
63
71
|
|
64
72
|
it 'can display its attribute_names' do
|
65
|
-
expect(settings.foo.attribute_names).to eq [
|
73
|
+
expect(settings.foo.attribute_names).to eq %i[ bar nix qux ]
|
66
74
|
end
|
67
75
|
|
68
76
|
it 'can display its attribute_values' do
|
@@ -76,19 +84,21 @@ RSpec.describe ComplexConfig::Settings do
|
|
76
84
|
end
|
77
85
|
|
78
86
|
it 'can be converted into a hash' do
|
79
|
-
expect(settings.foo.to_h).to eq(bar: { baz: true }, qux: 'quux')
|
87
|
+
expect(settings.foo.to_h).to eq(bar: { baz: true }, nix: nil, qux: 'quux')
|
80
88
|
end
|
81
89
|
|
82
90
|
it 'can return a hash with pathes as keys' do
|
83
91
|
expect(settings.pathes(path_sep: ?:)).to eq(
|
84
92
|
'root:foo:bar:baz' => true,
|
85
|
-
'root:foo:
|
93
|
+
'root:foo:nix' => nil,
|
94
|
+
'root:foo:qux' => "quux",
|
86
95
|
)
|
87
96
|
end
|
88
97
|
|
89
98
|
it 'can be listed as string' do
|
90
99
|
expect(settings.attributes_list(pair_sep: ' → ', path_sep: ?/)).to eq <<~EOT
|
91
100
|
root/foo/bar/baz → true
|
101
|
+
root/foo/nix → nil
|
92
102
|
root/foo/qux → "quux"
|
93
103
|
EOT
|
94
104
|
end
|
@@ -101,6 +111,7 @@ RSpec.describe ComplexConfig::Settings do
|
|
101
111
|
settings[:ary] = described_class[ [ 1, { nested: 2 }, 3 ] ]
|
102
112
|
expect(settings.attributes_list).to eq <<~EOT
|
103
113
|
root.foo.bar.baz = true
|
114
|
+
root.foo.nix = nil
|
104
115
|
root.foo.qux = "quux"
|
105
116
|
root.ary[0] = 1
|
106
117
|
root.ary[1].nested = 2
|
@@ -115,6 +126,7 @@ RSpec.describe ComplexConfig::Settings do
|
|
115
126
|
├─ foo
|
116
127
|
│ ├─ bar
|
117
128
|
│ │ └─ baz = true
|
129
|
+
│ ├─ nix = nil
|
118
130
|
│ └─ qux = "quux"
|
119
131
|
└─ ary
|
120
132
|
├─ 1
|
@@ -124,30 +136,46 @@ RSpec.describe ComplexConfig::Settings do
|
|
124
136
|
EOT
|
125
137
|
end
|
126
138
|
|
127
|
-
it 'can be pretty printed' do
|
139
|
+
it 'can be pretty printed with utf8' do
|
128
140
|
q = double
|
129
141
|
expect(q).to receive(:text).with(<<~EOT.chomp)
|
130
142
|
root
|
131
143
|
└─ foo
|
132
144
|
├─ bar
|
133
145
|
│ └─ baz = true
|
146
|
+
├─ nix = nil
|
134
147
|
└─ qux = "quux"
|
135
148
|
EOT
|
136
149
|
settings.pretty_print(q)
|
137
150
|
end
|
138
151
|
|
152
|
+
it 'can be pretty printed with ASCII7' do
|
153
|
+
q = double
|
154
|
+
expect(q).to receive(:text).with(<<~EOT.chomp)
|
155
|
+
root
|
156
|
+
`- foo
|
157
|
+
+- bar
|
158
|
+
| `- baz = true
|
159
|
+
+- nix = nil
|
160
|
+
`- qux = "quux"
|
161
|
+
EOT
|
162
|
+
ENV['LANG'] = 'de_DE.ISO8859-15'
|
163
|
+
settings.pretty_print(q)
|
164
|
+
end
|
165
|
+
|
139
166
|
it 'can be converted into YAML' do
|
140
167
|
expect(settings.to_yaml).to eq <<EOT
|
141
168
|
---
|
142
169
|
:foo:
|
143
170
|
:bar:
|
144
171
|
:baz: true
|
172
|
+
:nix:
|
145
173
|
:qux: quux
|
146
174
|
EOT
|
147
175
|
end
|
148
176
|
|
149
177
|
it 'can be converted into JSON' do
|
150
|
-
expect(settings.to_json).to eq '{"foo":{"bar":{"baz":true},"qux":"quux"}}'
|
178
|
+
expect(settings.to_json).to eq '{"foo":{"bar":{"baz":true},"nix":null,"qux":"quux"}}'
|
151
179
|
end
|
152
180
|
|
153
181
|
it 'raises exception if expected attribute is missing' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: complex_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.17.
|
19
|
+
version: 1.17.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.17.
|
26
|
+
version: 1.17.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: utils
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: debug
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|