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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6474060cd0f183904552779ab98ae7cb6fb9db5599fc482a903f3d392275179b
4
- data.tar.gz: 035c81f9e729450c78768c37db1d4e59d22e3e2836e024bc673ade290bde3d78
3
+ metadata.gz: d25e925267a755f28ea324b3ed2f43d737659124e097ae52ac48bd87aedd9173
4
+ data.tar.gz: f68858a3bba577915b3d602093363f1143b29be84cfe42f4ac4c64056baa5551
5
5
  SHA512:
6
- metadata.gz: 1354001406f48dd90e2cdefa85aace10f96bdcbaadc1f64fcd470bdbcd3cc8a7c82a9db56766b61cb37c944d4a465838c9157c369f6213c476797b8003647d91
7
- data.tar.gz: 81cedae129b2079be7bd94b473d6d17ce53d292fc83493ee491bb73b86e5f7690849bf66f5d7a25c5ba36101210294a932b3857ac10512cf8c21a0f1311fcd70
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
@@ -30,7 +30,6 @@ GemHadar do
30
30
  development_dependency 'simplecov'
31
31
  development_dependency 'rspec'
32
32
  development_dependency 'monetize'
33
- development_dependency 'utils'
34
33
  development_dependency 'debug'
35
34
  end
36
35
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.21.2
1
+ 0.22.1
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: complex_config 0.21.2 ruby lib
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.21.2".freeze
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-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.0".freeze])
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.ask_and_send(:to_h) rescue 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
@@ -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
- i.zero? ? "├─ " : "│ "
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
- i.zero? ? "└─ " : " "
49
+ if @utf8
50
+ i.zero? ? "└─ " : " "
51
+ else
52
+ i.zero? ? "`- " : " "
53
+ end
41
54
  end
42
55
 
43
56
  public
@@ -1,6 +1,6 @@
1
1
  module ComplexConfig
2
2
  # ComplexConfig version
3
- VERSION = '0.21.2'
3
+ VERSION = '0.22.1'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -16,4 +16,3 @@ RSpec.describe ComplexConfig::Config do
16
16
  expect(ComplexConfig::Provider.plugins).to include plugin_code
17
17
  end
18
18
  end
19
-
@@ -43,4 +43,3 @@ RSpec.describe ComplexConfig::Plugins do
43
43
  end
44
44
  end
45
45
  end
46
-
@@ -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
- qux: 'quux'
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 [ :bar, :qux ]
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:qux' => "quux"
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.21.2
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-09 00:00:00.000000000 Z
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.0
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.0
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