complex_config 0.21.0 → 0.21.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +7 -0
- data/README.md +11 -7
- data/VERSION +1 -1
- data/complex_config.gemspec +2 -2
- data/lib/complex_config/settings.rb +6 -1
- data/lib/complex_config/version.rb +1 -1
- data/spec/complex_config/settings_spec.rb +32 -26
- 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: 1be2d6a3e3fa81319f6455a9e4f158f45d096c322a3d224e8547fe81a4490b33
|
4
|
+
data.tar.gz: fc4bfec9fac1f616f51818f3bcd1ebf0ca4db5102d7430b09207339746472293
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65f0b0f8c29597bda6a31a2c80285e02caeccb7068e184f8385dfa8849233623382a6667407328fcc3b2c5a91f108885daba55f4b4eb70f7ea7f1b241e82833a
|
7
|
+
data.tar.gz: 23fbb4f4bc736e10606cd001ec1af90bba397ad939720d148354e9fada7cbb4a0b6b849ffe7592d7692247a4d615d600f430ddbc39c11423d33e3ce360be902b
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changes
|
2
2
|
|
3
|
+
## 2024-09-09 v0.21.1
|
4
|
+
|
5
|
+
* **API Changes**:
|
6
|
+
* The default string representation of ComplexConfig has been changed to a tree-like structure.
|
7
|
+
* The `to_s` method in ComplexConfig::Settings has been renamed to `list`.
|
8
|
+
* A new `list` method has been added to ComplexConfig::Settings for listing settings as a string.
|
9
|
+
|
3
10
|
## 2024-09-09 v0.21.0
|
4
11
|
|
5
12
|
* **Tree Representation**:
|
data/README.md
CHANGED
@@ -98,13 +98,17 @@ plugin return an URI instance:
|
|
98
98
|
You can also fetch config settings from a different environment:
|
99
99
|
|
100
100
|
>> pp cc.products(:test); nil
|
101
|
-
products
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
101
|
+
products
|
102
|
+
└─ flux_capacitor
|
103
|
+
└─ test_version
|
104
|
+
├─ name = "Yadayada"
|
105
|
+
├─ price_in_cents = 666
|
106
|
+
├─ manual_pdf_url = "http://staging.brown-inc.com/manuals/fc_10.pdf"
|
107
|
+
└─ components
|
108
|
+
├─ "Experimental Chrono-Levitation Chamber (ECLC)"
|
109
|
+
├─ "Modular Gravitational Displacement Coils (MGDCs)"
|
110
|
+
├─ "Variable Quantum Flux Transducer (VQFT)"
|
111
|
+
└─ "Development Time-Space Navigation System (DTNS)"kk
|
108
112
|
|
109
113
|
Calling `complex_config.products.` instead of `cc(…)` would skip the implicite
|
110
114
|
namespacing via the `RAILS_ENV` environment, so
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.21.
|
1
|
+
0.21.1
|
data/complex_config.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: complex_config 0.21.
|
2
|
+
# stub: complex_config 0.21.1 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "complex_config".freeze
|
6
|
-
s.version = "0.21.
|
6
|
+
s.version = "0.21.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]
|
@@ -135,13 +135,18 @@ class ComplexConfig::Settings < BasicObject
|
|
135
135
|
size == 0
|
136
136
|
end
|
137
137
|
|
138
|
-
def
|
138
|
+
def list(pair_sep: ' = ', path_sep: ?.)
|
139
139
|
empty? and return self.class.name
|
140
140
|
pathes(path_sep: path_sep).inject('') do |result, (path, value)|
|
141
141
|
result + "#{path}#{pair_sep}#{value.inspect}\n"
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
|
+
def to_s(*)
|
146
|
+
empty? and return self.class.name
|
147
|
+
to_tree.to_s
|
148
|
+
end
|
149
|
+
|
145
150
|
def pathes(hash = table, path_sep: ?., prefix: name_prefix.to_s, result: {})
|
146
151
|
hash.each do |key, value|
|
147
152
|
path = prefix.empty? ? key.to_s : "#{prefix}#{path_sep}#{key}"
|
@@ -86,47 +86,53 @@ RSpec.describe ComplexConfig::Settings do
|
|
86
86
|
)
|
87
87
|
end
|
88
88
|
|
89
|
-
it 'can be
|
90
|
-
expect(settings.
|
91
|
-
root/foo/bar/baz → true
|
92
|
-
root/foo/qux → "quux"
|
93
|
-
EOT
|
89
|
+
it 'can be listed as string' do
|
90
|
+
expect(settings.list(pair_sep: ' → ', path_sep: ?/)).to eq <<~EOT
|
91
|
+
root/foo/bar/baz → true
|
92
|
+
root/foo/qux → "quux"
|
93
|
+
EOT
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'responds with class name if #to_s is called on empty settigs' do
|
97
97
|
expect(described_class.new.to_s).to eq described_class.name
|
98
98
|
end
|
99
99
|
|
100
|
-
it 'can be
|
100
|
+
it 'can be listesd as a string if it has arrays' do
|
101
101
|
settings[:ary] = described_class[ [ 1, { nested: 2 }, 3 ] ]
|
102
|
-
expect(settings.
|
103
|
-
root.foo.bar.baz = true
|
104
|
-
root.foo.qux = "quux"
|
105
|
-
root.ary[0] = 1
|
106
|
-
root.ary[1].nested = 2
|
107
|
-
root.ary[2] = 3
|
108
|
-
EOT
|
102
|
+
expect(settings.list).to eq <<~EOT
|
103
|
+
root.foo.bar.baz = true
|
104
|
+
root.foo.qux = "quux"
|
105
|
+
root.ary[0] = 1
|
106
|
+
root.ary[1].nested = 2
|
107
|
+
root.ary[2] = 3
|
108
|
+
EOT
|
109
109
|
end
|
110
110
|
|
111
111
|
it 'can be represented as tree' do
|
112
112
|
settings[:ary] = described_class[ [ 1, { nested: 2 }, 3 ] ]
|
113
|
-
expect(settings.to_tree.to_s).to eq
|
114
|
-
root
|
115
|
-
├─ foo
|
116
|
-
│ ├─ bar
|
117
|
-
│ │ └─ baz = true
|
118
|
-
│ └─ qux = "quux"
|
119
|
-
└─ ary
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
EOT
|
113
|
+
expect(settings.to_tree.to_s).to eq <<~EOT.chomp
|
114
|
+
root
|
115
|
+
├─ foo
|
116
|
+
│ ├─ bar
|
117
|
+
│ │ └─ baz = true
|
118
|
+
│ └─ qux = "quux"
|
119
|
+
└─ ary
|
120
|
+
├─ 1
|
121
|
+
├─ 1
|
122
|
+
│ └─ nested = 2
|
123
|
+
└─ 3
|
124
|
+
EOT
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'can be pretty printed' do
|
128
128
|
q = double
|
129
|
-
expect(q).to receive(:text).with(
|
129
|
+
expect(q).to receive(:text).with(<<~EOT.chomp)
|
130
|
+
root
|
131
|
+
└─ foo
|
132
|
+
├─ bar
|
133
|
+
│ └─ baz = true
|
134
|
+
└─ qux = "quux"
|
135
|
+
EOT
|
130
136
|
settings.pretty_print(q)
|
131
137
|
end
|
132
138
|
|