qonfig 0.16.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/.travis.yml +6 -6
  4. data/CHANGELOG.md +17 -0
  5. data/README.md +630 -49
  6. data/gemfiles/with_external_deps.gemfile +2 -2
  7. data/lib/qonfig/commands/{add_nested_option.rb → definition/add_nested_option.rb} +1 -1
  8. data/lib/qonfig/commands/{add_option.rb → definition/add_option.rb} +1 -1
  9. data/lib/qonfig/commands/{compose.rb → definition/compose.rb} +1 -1
  10. data/lib/qonfig/commands/{expose_json.rb → definition/expose_json.rb} +1 -1
  11. data/lib/qonfig/commands/{expose_self.rb → definition/expose_self.rb} +1 -1
  12. data/lib/qonfig/commands/{expose_yaml.rb → definition/expose_yaml.rb} +1 -1
  13. data/lib/qonfig/commands/definition/load_from_env/value_converter.rb +82 -0
  14. data/lib/qonfig/commands/{load_from_env.rb → definition/load_from_env.rb} +1 -1
  15. data/lib/qonfig/commands/{load_from_json.rb → definition/load_from_json.rb} +1 -1
  16. data/lib/qonfig/commands/{load_from_self.rb → definition/load_from_self.rb} +1 -1
  17. data/lib/qonfig/commands/{load_from_yaml.rb → definition/load_from_yaml.rb} +1 -1
  18. data/lib/qonfig/commands/definition.rb +16 -0
  19. data/lib/qonfig/commands/instantiation/values_file.rb +171 -0
  20. data/lib/qonfig/commands/instantiation.rb +7 -0
  21. data/lib/qonfig/commands.rb +2 -10
  22. data/lib/qonfig/data_set/lock.rb +61 -4
  23. data/lib/qonfig/data_set.rb +151 -3
  24. data/lib/qonfig/dsl.rb +56 -16
  25. data/lib/qonfig/errors.rb +38 -11
  26. data/lib/qonfig/loaders/dynamic.rb +52 -0
  27. data/lib/qonfig/loaders/json.rb +6 -0
  28. data/lib/qonfig/loaders/yaml.rb +13 -0
  29. data/lib/qonfig/loaders.rb +3 -0
  30. data/lib/qonfig/plugins/toml/data_set.rb +13 -0
  31. data/lib/qonfig/plugins/toml/dsl.rb +6 -2
  32. data/lib/qonfig/plugins/toml/errors.rb +12 -0
  33. data/lib/qonfig/plugins/toml/loaders/dynamic.rb +31 -0
  34. data/lib/qonfig/plugins/toml/loaders/toml.rb +6 -0
  35. data/lib/qonfig/plugins/toml.rb +2 -0
  36. data/lib/qonfig/settings/builder.rb +1 -1
  37. data/lib/qonfig/settings.rb +21 -0
  38. data/lib/qonfig/validator/basic.rb +9 -1
  39. data/lib/qonfig/validator/builder/attribute_consistency.rb +29 -0
  40. data/lib/qonfig/validator/builder.rb +39 -14
  41. data/lib/qonfig/validator/dsl.rb +9 -1
  42. data/lib/qonfig/validator/method_based.rb +4 -2
  43. data/lib/qonfig/validator/predefined/common.rb +4 -2
  44. data/lib/qonfig/validator/predefined/registry.rb +0 -2
  45. data/lib/qonfig/validator/predefined/registry_control_mixin.rb +3 -2
  46. data/lib/qonfig/validator/proc_based.rb +4 -2
  47. data/lib/qonfig/version.rb +1 -1
  48. data/qonfig.gemspec +1 -1
  49. metadata +21 -15
  50. data/lib/qonfig/commands/load_from_env/value_converter.rb +0 -84
@@ -272,6 +272,15 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
272
272
  value.is_a?(Qonfig::Settings)
273
273
  end
274
274
 
275
+ # @param key_path [Array<Symbol, String>]
276
+ # @return [Boolean]
277
+ #
278
+ # @api private
279
+ # @since 0.17.0
280
+ def __has_key__(*key_path)
281
+ __lock__.thread_safe_access { __is_key_exists__(*key_path) }
282
+ end
283
+
275
284
  private
276
285
 
277
286
  # @return [Qonfig::Settings::Lock]
@@ -280,6 +289,18 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
280
289
  # @since 0.2.0
281
290
  attr_reader :__lock__
282
291
 
292
+ # @param key_path [Array<String, Symbol>]
293
+ # @return [Boolean]
294
+ #
295
+ # @api private
296
+ # @since 0.17.0
297
+ def __is_key_exists__(*key_path)
298
+ __deep_access__(*key_path)
299
+ true
300
+ rescue Qonfig::UnknownSettingError
301
+ false
302
+ end
303
+
283
304
  # @param block [Proc]
284
305
  # @return [Enumerable]
285
306
  #
@@ -9,13 +9,21 @@ class Qonfig::Validator::Basic
9
9
  # @since 0.13.0
10
10
  attr_reader :setting_key_matcher
11
11
 
12
+ # @return [Boolean]
13
+ #
14
+ # @api private
15
+ # @since 0.17.0
16
+ attr_reader :strict
17
+
12
18
  # @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
19
+ # @param strict [Boolean]
13
20
  # @return [void]
14
21
  #
15
22
  # @api private
16
23
  # @since 0.13.0
17
- def initialize(setting_key_matcher)
24
+ def initialize(setting_key_matcher, strict)
18
25
  @setting_key_matcher = setting_key_matcher
26
+ @strict = strict
19
27
  end
20
28
 
21
29
  # @param data_set [Qonfig::DataSet]
@@ -2,11 +2,13 @@
2
2
 
3
3
  # @api private
4
4
  # @since 0.13.0
5
+ # rubocop:disable Metrics/ClassLength
5
6
  class Qonfig::Validator::Builder::AttributeConsistency
6
7
  class << self
7
8
  # @param setting_key_pattern [String, Symbol, NilClass]
8
9
  # @param predefined_validator [String, Symbol, NilClass]
9
10
  # @param runtime_validation_method [String, Symbol, NilClass]
11
+ # @param strict [Boolean]
10
12
  # @param validation_logic [Proc, NilClass]
11
13
  # @return [void]
12
14
  #
@@ -16,12 +18,14 @@ class Qonfig::Validator::Builder::AttributeConsistency
16
18
  setting_key_pattern,
17
19
  predefined_validator,
18
20
  runtime_validation_method,
21
+ strict,
19
22
  validation_logic
20
23
  )
21
24
  new(
22
25
  setting_key_pattern,
23
26
  predefined_validator,
24
27
  runtime_validation_method,
28
+ strict,
25
29
  validation_logic
26
30
  ).check!
27
31
  end
@@ -39,11 +43,13 @@ class Qonfig::Validator::Builder::AttributeConsistency
39
43
  setting_key_pattern,
40
44
  predefined_validator,
41
45
  runtime_validation_method,
46
+ strict,
42
47
  validation_logic
43
48
  )
44
49
  @setting_key_pattern = setting_key_pattern
45
50
  @predefined_validator = predefined_validator
46
51
  @runtime_validation_method = runtime_validation_method
52
+ @strict = strict
47
53
  @validation_logic = validation_logic
48
54
  end
49
55
 
@@ -54,6 +60,7 @@ class Qonfig::Validator::Builder::AttributeConsistency
54
60
  # @api private
55
61
  # @since 0.13.0
56
62
  def check!
63
+ consistent_strict_behaviour!
57
64
  consistent_method_choice!
58
65
  consistent_predefined_validator!
59
66
  cosnistent_runtime_validation_method!
@@ -81,6 +88,12 @@ class Qonfig::Validator::Builder::AttributeConsistency
81
88
  # @since 0.13.0
82
89
  attr_reader :runtime_validation_method
83
90
 
91
+ # @return [Boolean]
92
+ #
93
+ # @api private
94
+ # @since 0.17.0
95
+ attr_reader :strict
96
+
84
97
  # @return [Proc, NilClass]
85
98
  #
86
99
  # @api private
@@ -110,6 +123,21 @@ class Qonfig::Validator::Builder::AttributeConsistency
110
123
  end
111
124
  end
112
125
 
126
+ # @return [void]
127
+ #
128
+ # @raise [Qonfig::ValidatorArgumentError]
129
+ #
130
+ # @api private
131
+ # @since 0.17.0
132
+ def consistent_strict_behaviour!
133
+ unless strict.is_a?(TrueClass) || strict.is_a?(FalseClass)
134
+ raise(
135
+ Qonfig::ValidatorArgumentError,
136
+ ':strict should be a boolean'
137
+ )
138
+ end
139
+ end
140
+
113
141
  # @return [void]
114
142
  #
115
143
  # @raise [Qonfig::ValidatorArgumentError]
@@ -179,3 +207,4 @@ class Qonfig::Validator::Builder::AttributeConsistency
179
207
  )
180
208
  end
181
209
  end
210
+ # rubocop:enable Metrics/ClassLength
@@ -29,11 +29,18 @@ class Qonfig::Validator::Builder
29
29
  # @since 0.13.0
30
30
  NO_PREDEFINED_VALIDATOR = nil
31
31
 
32
+ # @return [Boolean]
33
+ #
34
+ # @api private
35
+ # @since 0.17.0
36
+ DEFAULT_STRICT_BEHAVIOUR = false
37
+
32
38
  class << self
33
39
  # @option setting_key_pattern [String, Symbol, NilClass]
34
40
  # @option predefined_validator [String, Symbol, NilClass]
35
41
  # @option runtime_validation_method [String, Symbol, NilClass]
36
42
  # @option validation_logic [Proc, NilClass]
43
+ # @option strict [Boolean]
37
44
  # @return [Qonfig::Validator::MethodBased, Qonfig::Validator::ProcBased]
38
45
  #
39
46
  # @api private
@@ -42,20 +49,23 @@ class Qonfig::Validator::Builder
42
49
  setting_key_pattern: EMPTY_SETTING_KEY_PATTERN,
43
50
  runtime_validation_method: NO_RUNTIME_VALIDATION_METHOD,
44
51
  validation_logic: NO_VALIDATION_LOGIC,
52
+ strict: DEFAULT_STRICT_BEHAVIOUR,
45
53
  predefined_validator: NO_PREDEFINED_VALIDATOR
46
54
  )
47
55
  new(
48
56
  setting_key_pattern,
49
57
  predefined_validator,
50
58
  runtime_validation_method,
59
+ strict,
51
60
  validation_logic
52
61
  ).build
53
62
  end
54
63
  end
55
64
 
56
65
  # @param setting_key_pattern [String, Symbol, NilClass]
57
- # @param predefined_validator [String, Symbol, NilClass]
66
+ # @param predefined_validator_name [String, Symbol, NilClass]
58
67
  # @param runtime_validation_method [String, Symbol, NilClass]
68
+ # @param strict [Boolean]
59
69
  # @param validation_logic [Proc, NilClass]
60
70
  # @return [void]
61
71
  #
@@ -63,13 +73,15 @@ class Qonfig::Validator::Builder
63
73
  # @since 0.13.0
64
74
  def initialize(
65
75
  setting_key_pattern,
66
- predefined_validator,
76
+ predefined_validator_name,
67
77
  runtime_validation_method,
78
+ strict,
68
79
  validation_logic
69
80
  )
70
81
  @setting_key_pattern = setting_key_pattern
71
- @predefined_validator = predefined_validator
82
+ @predefined_validator_name = predefined_validator_name
72
83
  @runtime_validation_method = runtime_validation_method
84
+ @strict = strict
73
85
  @validation_logic = validation_logic
74
86
  end
75
87
 
@@ -94,7 +106,7 @@ class Qonfig::Validator::Builder
94
106
  #
95
107
  # @api private
96
108
  # @since 0.13.0
97
- attr_reader :predefined_validator
109
+ attr_reader :predefined_validator_name
98
110
 
99
111
  # @return [String, Symbol, NilClass]
100
112
  #
@@ -102,6 +114,12 @@ class Qonfig::Validator::Builder
102
114
  # @since 0.13.0
103
115
  attr_reader :runtime_validation_method
104
116
 
117
+ # @return [Boolean]
118
+ #
119
+ # @api private
120
+ # @since 0.17.0
121
+ attr_reader :strict
122
+
105
123
  # @return [Proc, NilClass]
106
124
  #
107
125
  # @api private
@@ -117,8 +135,9 @@ class Qonfig::Validator::Builder
117
135
  def validate_attributes!
118
136
  AttributeConsistency.check!(
119
137
  setting_key_pattern,
120
- predefined_validator,
138
+ predefined_validator_name,
121
139
  runtime_validation_method,
140
+ strict,
122
141
  validation_logic
123
142
  )
124
143
  end
@@ -129,9 +148,9 @@ class Qonfig::Validator::Builder
129
148
  # @since 0.13.0
130
149
  def build_validator
131
150
  case
132
- when predefined_validator then build_predefined
133
- when runtime_validation_method then build_method_based
134
- when validation_logic then build_proc_based
151
+ when predefined_validator_name then build_predefined_validator
152
+ when runtime_validation_method then build_method_based_validator
153
+ when validation_logic then build_proc_based_validator
135
154
  end
136
155
  end
137
156
 
@@ -147,23 +166,29 @@ class Qonfig::Validator::Builder
147
166
  #
148
167
  # @api private
149
168
  # @since 0.13.0
150
- def build_method_based
151
- Qonfig::Validator::MethodBased.new(build_setting_key_matcher, runtime_validation_method)
169
+ def build_method_based_validator
170
+ Qonfig::Validator::MethodBased.new(
171
+ build_setting_key_matcher, strict, runtime_validation_method
172
+ )
152
173
  end
153
174
 
154
175
  # @return [Qonfig::Validator::ProcBased]
155
176
  #
156
177
  # @api private
157
178
  # @since 0.13.0
158
- def build_proc_based
159
- Qonfig::Validator::ProcBased.new(build_setting_key_matcher, validation_logic)
179
+ def build_proc_based_validator
180
+ Qonfig::Validator::ProcBased.new(
181
+ build_setting_key_matcher, strict, validation_logic
182
+ )
160
183
  end
161
184
 
162
185
  # @return [Qonfig::Settings::Predefined]
163
186
  #
164
187
  # @api private
165
188
  # @since 0.13.0
166
- def build_predefined
167
- Qonfig::Validator::Predefined.build(predefined_validator, build_setting_key_matcher)
189
+ def build_predefined_validator
190
+ Qonfig::Validator::Predefined.build(
191
+ predefined_validator_name, build_setting_key_matcher, strict
192
+ )
168
193
  end
169
194
  end
@@ -33,6 +33,7 @@ module Qonfig::Validator::DSL
33
33
  # @param setting_key_pattern [String, Symbol, NilClass]
34
34
  # @param predefined [String, Symbol]
35
35
  # @option by [String, Symbol, NilClass]
36
+ # @option stict [Boolean]
36
37
  # @param custom_validation [Proc]
37
38
  # @return [void]
38
39
  #
@@ -40,11 +41,18 @@ module Qonfig::Validator::DSL
40
41
  #
41
42
  # @api private
42
43
  # @since 0.13.0
43
- def validate(setting_key_pattern = nil, predefined = nil, by: nil, &custom_validation)
44
+ def validate(
45
+ setting_key_pattern = nil,
46
+ predefined = nil,
47
+ strict: false,
48
+ by: nil,
49
+ &custom_validation
50
+ )
44
51
  validators << Qonfig::Validator::Builder.build(
45
52
  setting_key_pattern: setting_key_pattern,
46
53
  predefined_validator: predefined,
47
54
  runtime_validation_method: by,
55
+ strict: strict,
48
56
  validation_logic: custom_validation
49
57
  )
50
58
  end
@@ -10,13 +10,14 @@ class Qonfig::Validator::MethodBased < Qonfig::Validator::Basic
10
10
  attr_reader :runtime_validation_method
11
11
 
12
12
  # @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
13
+ # @param strict [Boolean]
13
14
  # @param runtime_validation_method [String, Symbol]
14
15
  # @return [void]
15
16
  #
16
17
  # @api private
17
18
  # @since 0.13.0
18
- def initialize(setting_key_matcher, runtime_validation_method)
19
- super(setting_key_matcher)
19
+ def initialize(setting_key_matcher, strict, runtime_validation_method)
20
+ super(setting_key_matcher, strict)
20
21
  @runtime_validation_method = runtime_validation_method
21
22
  end
22
23
 
@@ -28,6 +29,7 @@ class Qonfig::Validator::MethodBased < Qonfig::Validator::Basic
28
29
  def validate_concrete(data_set)
29
30
  data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
30
31
  next unless setting_key_matcher.match?(setting_key)
32
+ next if !strict && setting_value.nil?
31
33
 
32
34
  raise(
33
35
  Qonfig::ValidationError,
@@ -10,13 +10,14 @@ class Qonfig::Validator::Predefined::Common < Qonfig::Validator::Basic
10
10
  attr_reader :validation
11
11
 
12
12
  # @param setting_key_matcher [Qonfig::Settings::KeyMatcher]
13
+ # @param strict [Boolean]
13
14
  # @param validation [Proc]
14
15
  # @return [void]
15
16
  #
16
17
  # @api private
17
18
  # @since 0.13.0
18
- def initialize(setting_key_matcher, validation)
19
- super(setting_key_matcher)
19
+ def initialize(setting_key_matcher, strict, validation)
20
+ super(setting_key_matcher, strict)
20
21
  @validation = validation
21
22
  end
22
23
 
@@ -30,6 +31,7 @@ class Qonfig::Validator::Predefined::Common < Qonfig::Validator::Basic
30
31
  def validate_concrete(data_set)
31
32
  data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
32
33
  next unless setting_key_matcher.match?(setting_key)
34
+ next if !strict && setting_value.nil?
33
35
 
34
36
  raise(
35
37
  Qonfig::ValidationError,
@@ -42,7 +42,6 @@ class Qonfig::Validator::Predefined::Registry
42
42
  # @since 0.13.0
43
43
  def resolve(name)
44
44
  thread_safe do
45
- # rubocop:disable Style/RedundantBegin
46
45
  begin
47
46
  validators.fetch(indifferently_accessable_name(name))
48
47
  rescue KeyError
@@ -51,7 +50,6 @@ class Qonfig::Validator::Predefined::Registry
51
50
  "Predefined validator with name '#{name}' does not exist."
52
51
  )
53
52
  end
54
- # rubocop:enable Style/RedundantBegin
55
53
  end
56
54
  end
57
55
 
@@ -32,12 +32,13 @@ module Qonfig::Validator::Predefined::RegistryControlMixin
32
32
 
33
33
  # @param name [String, Symbol]
34
34
  # @param setting_key_matcher [Qonfig::Setting::KeyMatcher]
35
+ # @param strict [Boolean]
35
36
  # @return [Qonfig::Validator::Predefined::Common]
36
37
  #
37
38
  # @api private
38
39
  # @since 0.13.0
39
- def build(name, setting_key_matcher)
40
+ def build(name, setting_key_matcher, strict)
40
41
  validation = registry.resolve(name)
41
- Qonfig::Validator::Predefined::Common.new(setting_key_matcher, validation)
42
+ Qonfig::Validator::Predefined::Common.new(setting_key_matcher, strict, validation)
42
43
  end
43
44
  end
@@ -10,13 +10,14 @@ class Qonfig::Validator::ProcBased < Qonfig::Validator::Basic
10
10
  attr_reader :validation
11
11
 
12
12
  # @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
13
+ # @param strict [Boolean]
13
14
  # @param vaidation [Proc]
14
15
  # @return [void]
15
16
  #
16
17
  # @api private
17
18
  # @since 0.13.0
18
- def initialize(setting_key_matcher, validation)
19
- super(setting_key_matcher)
19
+ def initialize(setting_key_matcher, strict, validation)
20
+ super(setting_key_matcher, strict)
20
21
  @validation = validation
21
22
  end
22
23
 
@@ -30,6 +31,7 @@ class Qonfig::Validator::ProcBased < Qonfig::Validator::Basic
30
31
  def validate_concrete(data_set)
31
32
  data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
32
33
  next unless setting_key_matcher.match?(setting_key)
34
+ next if !strict && setting_value.nil?
33
35
 
34
36
  raise(
35
37
  Qonfig::ValidationError,
@@ -5,5 +5,5 @@ module Qonfig
5
5
  #
6
6
  # @api public
7
7
  # @since 0.1.0
8
- VERSION = '0.16.0'
8
+ VERSION = '0.17.0'
9
9
  end
data/qonfig.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'coveralls', '~> 0.8'
33
33
  spec.add_development_dependency 'simplecov', '~> 0.16'
34
34
  spec.add_development_dependency 'rspec', '~> 3.8'
35
- spec.add_development_dependency 'armitage-rubocop', '~> 0.74'
35
+ spec.add_development_dependency 'armitage-rubocop', '~> 0.76'
36
36
 
37
37
  spec.add_development_dependency 'bundler'
38
38
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qonfig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Ibragimov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-13 00:00:00.000000000 Z
11
+ date: 2019-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coveralls
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.74'
61
+ version: '0.76'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.74'
68
+ version: '0.76'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -137,18 +137,21 @@ files:
137
137
  - lib/qonfig.rb
138
138
  - lib/qonfig/command_set.rb
139
139
  - lib/qonfig/commands.rb
140
- - lib/qonfig/commands/add_nested_option.rb
141
- - lib/qonfig/commands/add_option.rb
142
140
  - lib/qonfig/commands/base.rb
143
- - lib/qonfig/commands/compose.rb
144
- - lib/qonfig/commands/expose_json.rb
145
- - lib/qonfig/commands/expose_self.rb
146
- - lib/qonfig/commands/expose_yaml.rb
147
- - lib/qonfig/commands/load_from_env.rb
148
- - lib/qonfig/commands/load_from_env/value_converter.rb
149
- - lib/qonfig/commands/load_from_json.rb
150
- - lib/qonfig/commands/load_from_self.rb
151
- - lib/qonfig/commands/load_from_yaml.rb
141
+ - lib/qonfig/commands/definition.rb
142
+ - lib/qonfig/commands/definition/add_nested_option.rb
143
+ - lib/qonfig/commands/definition/add_option.rb
144
+ - lib/qonfig/commands/definition/compose.rb
145
+ - lib/qonfig/commands/definition/expose_json.rb
146
+ - lib/qonfig/commands/definition/expose_self.rb
147
+ - lib/qonfig/commands/definition/expose_yaml.rb
148
+ - lib/qonfig/commands/definition/load_from_env.rb
149
+ - lib/qonfig/commands/definition/load_from_env/value_converter.rb
150
+ - lib/qonfig/commands/definition/load_from_json.rb
151
+ - lib/qonfig/commands/definition/load_from_self.rb
152
+ - lib/qonfig/commands/definition/load_from_yaml.rb
153
+ - lib/qonfig/commands/instantiation.rb
154
+ - lib/qonfig/commands/instantiation/values_file.rb
152
155
  - lib/qonfig/configurable.rb
153
156
  - lib/qonfig/data_set.rb
154
157
  - lib/qonfig/data_set/class_builder.rb
@@ -157,6 +160,7 @@ files:
157
160
  - lib/qonfig/errors.rb
158
161
  - lib/qonfig/loaders.rb
159
162
  - lib/qonfig/loaders/basic.rb
163
+ - lib/qonfig/loaders/dynamic.rb
160
164
  - lib/qonfig/loaders/end_data.rb
161
165
  - lib/qonfig/loaders/json.rb
162
166
  - lib/qonfig/loaders/yaml.rb
@@ -169,7 +173,9 @@ files:
169
173
  - lib/qonfig/plugins/toml/commands/load_from_toml.rb
170
174
  - lib/qonfig/plugins/toml/data_set.rb
171
175
  - lib/qonfig/plugins/toml/dsl.rb
176
+ - lib/qonfig/plugins/toml/errors.rb
172
177
  - lib/qonfig/plugins/toml/loaders.rb
178
+ - lib/qonfig/plugins/toml/loaders/dynamic.rb
173
179
  - lib/qonfig/plugins/toml/loaders/toml.rb
174
180
  - lib/qonfig/plugins/toml/tomlrb_fixes.rb
175
181
  - lib/qonfig/plugins/toml/uploaders/toml.rb
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Qonfig
4
- # @api private
5
- # @since 0.2.0
6
- module Commands::LoadFromENV::ValueConverter
7
- # @return [Regexp]
8
- #
9
- # @api private
10
- # @since 0.2.0
11
- INTEGER_PATTERN = /\A\d+\z/.freeze
12
-
13
- # @return [Regexp]
14
- #
15
- # @api private
16
- # @since 0.2.0
17
- FLOAT_PATTERN = /\A\d+\.\d+\z/.freeze
18
-
19
- # @return [Regexp]
20
- #
21
- # @api private
22
- # @since 0.2.0
23
- TRUE_PATTERN = /\A(t|true)\z/i.freeze
24
-
25
- # @return [Regexp]
26
- #
27
- # @api private
28
- # @since 0.2.0
29
- FALSE_PATTERN = /\A(f|false)\z/i.freeze
30
-
31
- # @return [Regexp]
32
- #
33
- # @api private
34
- # @since 0.2.0
35
- ARRAY_PATTERN = /\A[^'"].*\s*,\s*.*[^'"]\z/.freeze
36
-
37
- # @return [Regexp]
38
- #
39
- # @api private
40
- # @since 0.2.0
41
- QUOTED_STRING_PATTERN = /\A['"].*['"]\z/.freeze
42
-
43
- class << self
44
- # @param env_data [Hash]
45
- # @return [void]
46
- #
47
- # @api private
48
- # @since 0.2.0
49
- def convert_values!(env_data)
50
- env_data.each_pair do |key, value|
51
- env_data[key] = convert_value(value)
52
- end
53
- end
54
-
55
- private
56
-
57
- # @param value [Object]
58
- # @return [Object]
59
- #
60
- # @api private
61
- # @since 0.2.0
62
- def convert_value(value)
63
- return value unless value.is_a?(String)
64
-
65
- case value
66
- when INTEGER_PATTERN
67
- Integer(value)
68
- when FLOAT_PATTERN
69
- Float(value)
70
- when TRUE_PATTERN
71
- true
72
- when FALSE_PATTERN
73
- false
74
- when ARRAY_PATTERN
75
- value.split(/\s*,\s*/).map(&method(:convert_value))
76
- when QUOTED_STRING_PATTERN
77
- value.gsub(/(\A['"]|['"]\z)/, '')
78
- else
79
- value
80
- end
81
- end
82
- end
83
- end
84
- end