qonfig 0.18.0 → 0.18.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/CHANGELOG.md +8 -0
- data/README.md +17 -2
- data/lib/qonfig/data_set.rb +3 -2
- data/lib/qonfig/settings.rb +18 -31
- data/lib/qonfig/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ed2259a3f11b04bb0730f73f982228c20263340cd2aa0bd5c4e8d2a418ba04c
|
4
|
+
data.tar.gz: 318f345a9f6dc250725ad74bc34a12d087e9bf50d8c7c54f3cbc5d29cb211749
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c97a92c975202ff93d5317b3e82552a54af184f47980d146239edb528fb7d4523927939d43b0c7d98ae8a1a85b3f29cc0368eaebc164e3b930eebb477c7e10f
|
7
|
+
data.tar.gz: ea7e2b6e6def6d70eb7fa67f3e83c1e7920068ae253b3e2042a44164bf9486120e37395beee81c318c9ce450106ce5f4f4a0180c53f53c9e1dd3b116a4582508
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [0.18.1] - 2019-11-05
|
5
|
+
### Added
|
6
|
+
- New `yield_all:` attribute for `#deep_each_setting` method (`#deep_each_setting(yield_all: false, &block)`))
|
7
|
+
- `yield_all:` means "yield all config objects" (end values and root setting objects those have nested settings) (`false` by default)
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
- `#keys(all_variants: true)` returns incorrect set of keys when some of keys has name in dot-notated format;
|
11
|
+
|
4
12
|
## [0.18.0] - 2019-11-04
|
5
13
|
### Added
|
6
14
|
- `#keys` - returns a list of all config keys in dot-notation format;
|
data/README.md
CHANGED
@@ -552,10 +552,10 @@ config.settings.web_api # => "api.google.com"
|
|
552
552
|
|
553
553
|
- `#each_setting { |key, value| }`
|
554
554
|
- iterates over the root setting keys;
|
555
|
-
- `#deep_each_setting { |key, value| }`
|
555
|
+
- `#deep_each_setting(yield_all: false) { |key, value| }`
|
556
556
|
- iterates over all setting keys (deep inside);
|
557
557
|
- key object is represented as a string of `.`-joined setting key names;
|
558
|
-
|
558
|
+
- `yield_all:` means "yield all config objects" (end values and root setting objects those have nested settings) (`false` by default);
|
559
559
|
|
560
560
|
```ruby
|
561
561
|
class Config < Qonfig::DataSet
|
@@ -598,6 +598,21 @@ config.deep_each_setting { |key, value| { key => value } }
|
|
598
598
|
{ 'telegraf_prefix' => 'test' }
|
599
599
|
```
|
600
600
|
|
601
|
+
#### .deep_each_setting(yield_all: true)
|
602
|
+
|
603
|
+
```ruby
|
604
|
+
config.deep_each_setting(yield_all: true) { |key, value| { key => value } }
|
605
|
+
|
606
|
+
# result of each step:
|
607
|
+
{ 'db' => <Qonfig::Settings:0x00007ff8> } # (yield_all: true)
|
608
|
+
{ 'db.creds' => <Qonfig::Settings:0x00002ff1> } # (yield_all: true)
|
609
|
+
{ 'db.creds.user' => 'D@iVeR' }
|
610
|
+
{ 'db.creds.password' => 'test123' }
|
611
|
+
{ 'db.crds.data' => { test: false } }
|
612
|
+
{ 'telegraf_url' => 'udp://localhost:8094' }
|
613
|
+
{ 'telegraf_prefix' => 'test' }
|
614
|
+
```
|
615
|
+
|
601
616
|
---
|
602
617
|
|
603
618
|
### List of config keys
|
data/lib/qonfig/data_set.rb
CHANGED
@@ -281,6 +281,7 @@ class Qonfig::DataSet # rubocop:disable Metrics/ClassLength
|
|
281
281
|
end
|
282
282
|
|
283
283
|
# @param block [Proc]
|
284
|
+
# @option yield_all [Boolean]
|
284
285
|
# @return [Enumerable]
|
285
286
|
#
|
286
287
|
# @yield [setting_key, setting_value]
|
@@ -289,8 +290,8 @@ class Qonfig::DataSet # rubocop:disable Metrics/ClassLength
|
|
289
290
|
#
|
290
291
|
# @api public
|
291
292
|
# @since 0.13.0
|
292
|
-
def deep_each_setting(&block)
|
293
|
-
thread_safe_access { settings.__deep_each_setting__(&block) }
|
293
|
+
def deep_each_setting(yield_all: false, &block)
|
294
|
+
thread_safe_access { settings.__deep_each_setting__(yield_all: yield_all, &block) }
|
294
295
|
end
|
295
296
|
|
296
297
|
# @return [Boolean]
|
data/lib/qonfig/settings.rb
CHANGED
@@ -59,6 +59,7 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
59
59
|
|
60
60
|
# @param initial_setting_key [String, NilClass]
|
61
61
|
# @param block [Proc]
|
62
|
+
# @option yield_all [Boolean]
|
62
63
|
# @return [Enumerable]
|
63
64
|
#
|
64
65
|
# @yield [key, value]
|
@@ -67,9 +68,9 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
67
68
|
#
|
68
69
|
# @api private
|
69
70
|
# @since 0.13.0
|
70
|
-
def __deep_each_setting__(initial_setting_key = nil, &block)
|
71
|
+
def __deep_each_setting__(initial_setting_key = nil, yield_all: false, &block)
|
71
72
|
__lock__.thread_safe_access do
|
72
|
-
__deep_each_key_value_pair__(initial_setting_key, &block)
|
73
|
+
__deep_each_key_value_pair__(initial_setting_key, yield_all: yield_all, &block)
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
@@ -312,35 +313,19 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
312
313
|
# @api private
|
313
314
|
# @since 0.18.0
|
314
315
|
def __setting_keys__(all_variants: false)
|
315
|
-
# NOTE:
|
316
|
-
|
317
|
-
|
316
|
+
# NOTE: (if all_variants == true)
|
317
|
+
# We have { a: { b: { c: { d : 1 } } } }
|
318
|
+
# Its mean that we have these keys:
|
319
|
+
# - 'a' # => returns { b: { c: { d: 1 } } }
|
320
|
+
# - 'a.b' # => returns { c: { d: 1 } }
|
321
|
+
# - 'a.b.c' # => returns { d: 1 }
|
322
|
+
# - 'a.b.c.d' # => returns 1
|
323
|
+
|
324
|
+
Set.new.tap do |setting_keys|
|
325
|
+
__deep_each_key_value_pair__(yield_all: all_variants) do |setting_key, _setting_value|
|
318
326
|
setting_keys << setting_key
|
319
327
|
end
|
320
|
-
end
|
321
|
-
|
322
|
-
if all_variants
|
323
|
-
# NOTE:
|
324
|
-
# We have { a: { b: { c: { d : 1 } } } }
|
325
|
-
# Its mean that we have these keys:
|
326
|
-
# - 'a' # => returns { b: { c: { d: 1 } } }
|
327
|
-
# - 'a.b' # => returns { c: { d: 1 } }
|
328
|
-
# - 'a.b.c' # => returns { d: 1 }
|
329
|
-
# - 'a.b.c.d' # => returns 1
|
330
|
-
# So, get them all :)
|
331
|
-
|
332
|
-
setting_keys_set.each_with_object(Set.new) do |setting_key, varianted_setting_keys|
|
333
|
-
setting_key_paths = setting_key.split('.')
|
334
|
-
combination_size = setting_key_paths.size
|
335
|
-
|
336
|
-
combination_size.times do |merged_key_patterns_count|
|
337
|
-
sub_setting_key = setting_key_paths.slice(0..merged_key_patterns_count).join('.')
|
338
|
-
varianted_setting_keys << sub_setting_key
|
339
|
-
end
|
340
|
-
end
|
341
|
-
else
|
342
|
-
setting_keys_set
|
343
|
-
end
|
328
|
+
end.to_a
|
344
329
|
end
|
345
330
|
|
346
331
|
# @return [Array<String>]
|
@@ -378,6 +363,7 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
378
363
|
|
379
364
|
# @param initial_setting_key [String, NilClass]
|
380
365
|
# @param block [Proc]
|
366
|
+
# @option yield_all [Boolean]
|
381
367
|
# @return [Enumerator]
|
382
368
|
#
|
383
369
|
# @yield [setting_key, setting_value]
|
@@ -386,14 +372,15 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
386
372
|
#
|
387
373
|
# @api private
|
388
374
|
# @since 0.13.0
|
389
|
-
def __deep_each_key_value_pair__(initial_setting_key = nil, &block)
|
375
|
+
def __deep_each_key_value_pair__(initial_setting_key = nil, yield_all: false, &block)
|
390
376
|
enumerator = Enumerator.new do |yielder|
|
391
377
|
__each_key_value_pair__ do |setting_key, setting_value|
|
392
378
|
final_setting_key =
|
393
379
|
initial_setting_key ? "#{initial_setting_key}.#{setting_key}" : setting_key
|
394
380
|
|
395
381
|
if __is_a_setting__(setting_value)
|
396
|
-
|
382
|
+
yielder.yield(final_setting_key, setting_value) if yield_all
|
383
|
+
setting_value.__deep_each_setting__(final_setting_key, yield_all: yield_all, &block)
|
397
384
|
else
|
398
385
|
yielder.yield(final_setting_key, setting_value)
|
399
386
|
end
|
data/lib/qonfig/version.rb
CHANGED