qonfig 0.14.0 → 0.15.0

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: 881009df231adc7035ec25267ffe8d63a58a66878eb5017cc8a8f2084bd5753d
4
- data.tar.gz: de6d094271c5a42737b1f868cb5e6ec61d4e1c15090bf69249f4147ae168ae15
3
+ metadata.gz: 985a8b16d7fd6a86ec41fea68569c83f283e60f293ac8bca047ad4b0ca21b563
4
+ data.tar.gz: b94a684b24f696a67ce8c6a5ff2ceec98da628a9768ce6689fe1bd4a49ef130c
5
5
  SHA512:
6
- metadata.gz: d65fa945c02683ed445089bfec0f558eda6db5e34157ed315b781cf4410302b5c9a7908580f484ea82657a211674d1a04615291ec81e3fda127d45accf060858
7
- data.tar.gz: 6dab7357d7315839c5aeeb8a3a67b53cda1ad535847635ba099f37a979d43517c1b464d85eb7b37bd85c5864c5ee6ac8eb3eadce5ea3bb7f23367a45b34fe30c
6
+ metadata.gz: cc879948b2e2a88aa1e207802d6cc7870944af239d67a0ab8e0c1dea21e8410eb0dd4d7063830f8ee0fd37cf7f0a2b61606d9fec6504918e1243128adacb70a3
7
+ data.tar.gz: ce80093052178e5d59c5b8f713029da8e74cc1ac14febcfc3fefd7023e0b37b2b1422638ac0ba4dc14e7b90b45a4094bde876274c757b8eea6df2194285c52cd
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.15.0] - 2019-09-02
5
+ ### Added
6
+ - `:format`-option for `load_from_self` and `expose_self` commands thath identifies which data format
7
+ should be chosen for parsing;
8
+
4
9
  ## [0.14.0] - 2019-08-28
5
10
  ### Added
6
11
  - `expose_json`
data/README.md CHANGED
@@ -1329,14 +1329,17 @@ config.settings['RUN_CI'] # => '1'
1329
1329
  ### Load from \_\_END\_\_
1330
1330
 
1331
1331
  - aka `load_from_self`
1332
- - works with `YAML` format;
1332
+ - `:format` - specify the format of data placed under the `__END__` instruction:
1333
+ - `format: :yaml` - **YAML** format (by default);
1334
+ - `format: :json` - **JSON** format;
1335
+ - `format: :toml` - **TOML** format (via `toml`-plugin);
1333
1336
 
1334
1337
  ```ruby
1335
1338
  class Config < Qonfig::DataSet
1336
- load_from_self # on the root
1339
+ load_from_self # on the root (format: :yaml is used by default)
1337
1340
 
1338
1341
  setting :nested do
1339
- load_from_self # nested
1342
+ load_from_self, format: :yaml # with explicitly identified YAML format
1340
1343
  end
1341
1344
  end
1342
1345
 
@@ -1373,11 +1376,14 @@ connection_timeout:
1373
1376
  - aka `expose_self`;
1374
1377
  - works in `expose_json` and `expose_yaml` manner, but with `__END__` instruction of the current file;
1375
1378
  - `env:` - your environment name (must be a type of `String`, `Symbol` or `Numeric`);
1376
- - works with `YAML` format;
1379
+ - `:format` - specify the format of data placed under the `__END__` instruction:
1380
+ - `format: :yaml` - **YAML** format (by default);
1381
+ - `format: :json` - **JSON** format;
1382
+ - `format: :toml` - **TOML** format (via `toml`-plugin);
1377
1383
 
1378
1384
  ```ruby
1379
1385
  class Config < Qonfig::DataSet
1380
- expose_self env: :production
1386
+ expose_self env: :production, format: :yaml # with explicitly identified YAML format
1381
1387
 
1382
1388
  # NOTE: for Rails-like applications you can use this:
1383
1389
  expose_self env: Rails.env
@@ -1391,6 +1397,7 @@ config.settings.creds.user # => "D@iVeR" (from :production environment)
1391
1397
  config.settings.creds.password # => "test123" (from :production environment)
1392
1398
 
1393
1399
  __END__
1400
+
1394
1401
  default: &default
1395
1402
  log: false
1396
1403
  api_enabled: true
@@ -124,7 +124,7 @@ class Qonfig::Commands::ExposeJSON < Qonfig::Commands::Base
124
124
 
125
125
  raise(
126
126
  Qonfig::IncompatibleJSONStructureError,
127
- 'JSON content should have a hash-like structure'
127
+ 'JSON content must be a hash-like structure'
128
128
  ) unless json_data_slice.is_a?(Hash)
129
129
 
130
130
  json_based_settings = build_data_set_klass(json_data_slice).new.settings
@@ -144,7 +144,7 @@ class Qonfig::Commands::ExposeJSON < Qonfig::Commands::Base
144
144
  Qonfig::Loaders::JSON.load_file(file_path, fail_on_unexist: strict).tap do |json_data|
145
145
  raise(
146
146
  Qonfig::IncompatibleJSONStructureError,
147
- 'JSON content should have a hash-like structure'
147
+ 'JSON content must be a hash-like structure'
148
148
  ) unless json_data.is_a?(Hash)
149
149
  end
150
150
  end
@@ -3,6 +3,12 @@
3
3
  # @api private
4
4
  # @since 0.14.0
5
5
  class Qonfig::Commands::ExposeSelf < Qonfig::Commands::Base
6
+ # @return [String, Symbol]
7
+ #
8
+ # @api private
9
+ # @since 0.15.0
10
+ attr_reader :format
11
+
6
12
  # @return [String]
7
13
  #
8
14
  # @api private
@@ -17,20 +23,24 @@ class Qonfig::Commands::ExposeSelf < Qonfig::Commands::Base
17
23
 
18
24
  # @param caller_location [String]
19
25
  # @option env [String, Symbol]
26
+ # @option format [String, Symbol]
20
27
  #
21
28
  # @api private
22
29
  # @since 0.14.0
23
- def initialize(caller_location, env:)
30
+ def initialize(caller_location, env:, format:)
24
31
  unless env.is_a?(Symbol) || env.is_a?(String)
25
32
  raise Qonfig::ArgumentError, ':env should be a string or a symbol'
26
33
  end
27
34
 
28
- if env.to_s.empty?
29
- raise Qonfig::ArgumentError, ':env should be provided'
35
+ raise Qonfig::ArgumentError, ':env should be provided' if env.to_s.empty?
36
+
37
+ unless format.is_a?(String) || format.is_a?(Symbol)
38
+ raise Qonfig::ArgumentError, 'Format should be a symbol or a string'
30
39
  end
31
40
 
32
41
  @caller_location = caller_location
33
42
  @env = env
43
+ @format = format.tap { Qonfig::Loaders.resolve(format) }
34
44
  end
35
45
 
36
46
  # @param data_set [Qonfig::DataSet]
@@ -40,21 +50,22 @@ class Qonfig::Commands::ExposeSelf < Qonfig::Commands::Base
40
50
  # @api private
41
51
  # @since 0.14.0
42
52
  def call(data_set, settings)
43
- yaml_data = load_self_placed_yaml_data
44
- yaml_data_slice = yaml_data[env] || yaml_data[env.to_s] || yaml_data[env.to_sym]
53
+ self_placed_data = load_self_placed_end_data
54
+ env_based_data_slice =
55
+ self_placed_data[env] || self_placed_data[env.to_s] || self_placed_data[env.to_sym]
45
56
 
46
57
  raise(
47
58
  Qonfig::ExposeError,
48
59
  "#{file_path} file does not contain settings with <#{env}> environment key!"
49
- ) unless yaml_data_slice
60
+ ) unless env_based_data_slice
50
61
 
51
62
  raise(
52
- Qonfig::IncompatibleYAMLStructureError,
53
- 'YAML content should have a hash-like structure'
54
- ) unless yaml_data_slice.is_a?(Hash)
63
+ Qonfig::IncompatibleEndDataStructureError,
64
+ '__END__-data content must be a hash-like structure'
65
+ ) unless env_based_data_slice.is_a?(Hash)
55
66
 
56
- yaml_based_settings = build_data_set_klass(yaml_data_slice).new.settings
57
- settings.__append_settings__(yaml_based_settings)
67
+ self_placed_settings = build_data_set_klass(env_based_data_slice).new.settings
68
+ settings.__append_settings__(self_placed_settings)
58
69
  end
59
70
 
60
71
  private
@@ -62,39 +73,28 @@ class Qonfig::Commands::ExposeSelf < Qonfig::Commands::Base
62
73
  # @return [Hash]
63
74
  #
64
75
  # @raise [Qonfig::SelfDataNotFound]
65
- # @raise [Qonfig::IncompatibleYAMLStructureError]
76
+ # @raise [Qonfig::IncompatibleEndDataStructureError]
66
77
  #
67
78
  # @api private
68
79
  # @since 0.14.0
69
- def load_self_placed_yaml_data
70
- caller_file = caller_location.split(':').first
71
-
72
- raise(
73
- Qonfig::SelfDataNotFoundError,
74
- "Caller file does not exist! (location: #{caller_location})"
75
- ) unless File.exist?(caller_file)
76
-
77
- data_match = IO.read(caller_file).match(/\n__END__\n(?<end_data>.*)/m)
78
- raise Qonfig::SelfDataNotFoundError, '__END__ data not found!' unless data_match
79
-
80
- end_data = data_match[:end_data]
81
- raise Qonfig::SelfDataNotFoundError, '__END__ data not found!' unless end_data
80
+ def load_self_placed_end_data
81
+ end_data = Qonfig::Loaders::EndData.extract(caller_location)
82
+ settings_data = Qonfig::Loaders.resolve(format).load(end_data)
82
83
 
83
- yaml_data = Qonfig::Loaders::YAML.load(end_data)
84
84
  raise(
85
- Qonfig::IncompatibleYAMLStructureError,
86
- 'YAML content should have a hash-like structure'
87
- ) unless yaml_data.is_a?(Hash)
85
+ Qonfig::IncompatibleEndDataStructureError,
86
+ '__END__-data must be a hash-like structure'
87
+ ) unless settings_data.is_a?(Hash)
88
88
 
89
- yaml_data
89
+ settings_data
90
90
  end
91
91
 
92
- # @param self_placed_yaml_data [Hash]
92
+ # @param self_placed_settings [Hash]
93
93
  # @return [Class<Qonfig::DataSet>]
94
94
  #
95
95
  # @api private
96
96
  # @since 0.14.0
97
- def build_data_set_klass(self_placed_yaml_data)
98
- Qonfig::DataSet::ClassBuilder.build_from_hash(self_placed_yaml_data)
97
+ def build_data_set_klass(self_placed_settings)
98
+ Qonfig::DataSet::ClassBuilder.build_from_hash(self_placed_settings)
99
99
  end
100
100
  end
@@ -124,7 +124,7 @@ class Qonfig::Commands::ExposeYAML < Qonfig::Commands::Base
124
124
 
125
125
  raise(
126
126
  Qonfig::IncompatibleYAMLStructureError,
127
- 'YAML content should have a hash-like structure'
127
+ 'YAML content must be a hash-like structure'
128
128
  ) unless yaml_data_slice.is_a?(Hash)
129
129
 
130
130
  yaml_based_settings = build_data_set_klass(yaml_data_slice).new.settings
@@ -144,7 +144,7 @@ class Qonfig::Commands::ExposeYAML < Qonfig::Commands::Base
144
144
  Qonfig::Loaders::YAML.load_file(file_path, fail_on_unexist: strict).tap do |yaml_data|
145
145
  raise(
146
146
  Qonfig::IncompatibleYAMLStructureError,
147
- 'YAML content should have a hash-like structure'
147
+ 'YAML content must be a hash-like structure'
148
148
  ) unless yaml_data.is_a?(Hash)
149
149
  end
150
150
  end
@@ -63,9 +63,7 @@ class Qonfig::Commands::LoadFromENV < Qonfig::Commands::Base
63
63
  # @since 0.2.0
64
64
  def call(data_set, settings)
65
65
  env_data = extract_env_data
66
-
67
66
  env_based_settings = build_data_set_klass(env_data).new.settings
68
-
69
67
  settings.__append_settings__(env_based_settings)
70
68
  end
71
69
 
@@ -36,11 +36,10 @@ class Qonfig::Commands::LoadFromJSON < Qonfig::Commands::Base
36
36
 
37
37
  raise(
38
38
  Qonfig::IncompatibleJSONStructureError,
39
- 'JSON object should have a hash-like structure'
39
+ 'JSON object must be a hash-like structure'
40
40
  ) unless json_data.is_a?(Hash)
41
41
 
42
42
  json_based_settings = build_data_set_klass(json_data).new.settings
43
-
44
43
  settings.__append_settings__(json_based_settings)
45
44
  end
46
45
 
@@ -3,6 +3,12 @@
3
3
  # @api private
4
4
  # @since 0.2.0
5
5
  class Qonfig::Commands::LoadFromSelf < Qonfig::Commands::Base
6
+ # @return [String, Symbol]
7
+ #
8
+ # @api private
9
+ # @since 0.15.0
10
+ attr_reader :format
11
+
6
12
  # @return [String]
7
13
  #
8
14
  # @api private
@@ -10,11 +16,17 @@ class Qonfig::Commands::LoadFromSelf < Qonfig::Commands::Base
10
16
  attr_reader :caller_location
11
17
 
12
18
  # @param caller_location [String]
19
+ # @option format [String, Symbol]
13
20
  #
14
21
  # @api private
15
22
  # @since 0.2.0
16
- def initialize(caller_location)
23
+ def initialize(caller_location, format:)
24
+ unless format.is_a?(String) || format.is_a?(Symbol)
25
+ raise Qonfig::ArgumentError, 'Format should be a symbol or a string'
26
+ end
27
+
17
28
  @caller_location = caller_location
29
+ @format = format.tap { Qonfig::Loaders.resolve(format) }
18
30
  end
19
31
 
20
32
  # @param data_set [Qonfig::DataSet]
@@ -24,11 +36,10 @@ class Qonfig::Commands::LoadFromSelf < Qonfig::Commands::Base
24
36
  # @api private
25
37
  # @since 0.2.0
26
38
  def call(data_set, settings)
27
- yaml_data = load_self_placed_yaml_data
28
-
29
- yaml_based_settings = build_data_set_klass(yaml_data).new.settings
39
+ self_placed_end_data = load_self_placed_end_data
40
+ self_placed_settings = build_data_set_klass(self_placed_end_data).new.settings
30
41
 
31
- settings.__append_settings__(yaml_based_settings)
42
+ settings.__append_settings__(self_placed_settings)
32
43
  end
33
44
 
34
45
  private
@@ -40,35 +51,24 @@ class Qonfig::Commands::LoadFromSelf < Qonfig::Commands::Base
40
51
  #
41
52
  # @api private
42
53
  # @since 0.2.0
43
- def load_self_placed_yaml_data
44
- caller_file = caller_location.split(':').first
45
-
46
- raise(
47
- Qonfig::SelfDataNotFoundError,
48
- "Caller file does not exist! (location: #{caller_location})"
49
- ) unless File.exist?(caller_file)
50
-
51
- data_match = IO.read(caller_file).match(/\n__END__\n(?<end_data>.*)/m)
52
- raise Qonfig::SelfDataNotFoundError, '__END__ data not found!' unless data_match
53
-
54
- end_data = data_match[:end_data]
55
- raise Qonfig::SelfDataNotFoundError, '__END__ data not found!' unless end_data
54
+ def load_self_placed_end_data
55
+ end_data = Qonfig::Loaders::EndData.extract(caller_location)
56
+ settings_data = Qonfig::Loaders.resolve(format).load(end_data)
56
57
 
57
- yaml_data = Qonfig::Loaders::YAML.load(end_data)
58
58
  raise(
59
- Qonfig::IncompatibleYAMLStructureError,
60
- 'YAML content should have a hash-like structure'
61
- ) unless yaml_data.is_a?(Hash)
59
+ Qonfig::IncompatibleEndDataStructureError,
60
+ '__END__-data must be a hash-like structure'
61
+ ) unless settings_data.is_a?(Hash)
62
62
 
63
- yaml_data
63
+ settings_data
64
64
  end
65
65
 
66
- # @param self_placed_yaml_data [Hash]
66
+ # @param self_placed_settings [Hash]
67
67
  # @return [Class<Qonfig::DataSet>]
68
68
  #
69
69
  # @api private
70
70
  # @since 0.2.0
71
- def build_data_set_klass(self_placed_yaml_data)
72
- Qonfig::DataSet::ClassBuilder.build_from_hash(self_placed_yaml_data)
71
+ def build_data_set_klass(self_placed_settings)
72
+ Qonfig::DataSet::ClassBuilder.build_from_hash(self_placed_settings)
73
73
  end
74
74
  end
@@ -38,11 +38,10 @@ class Qonfig::Commands::LoadFromYAML < Qonfig::Commands::Base
38
38
 
39
39
  raise(
40
40
  Qonfig::IncompatibleYAMLStructureError,
41
- 'YAML content should have a hash-like structure'
41
+ 'YAML content must be a hash-like structure'
42
42
  ) unless yaml_data.is_a?(Hash)
43
43
 
44
44
  yaml_based_settings = build_data_set_klass(yaml_data).new.settings
45
-
46
45
  settings.__append_settings__(yaml_based_settings)
47
46
  end
48
47
 
data/lib/qonfig/dsl.rb CHANGED
@@ -77,9 +77,9 @@ module Qonfig::DSL
77
77
  #
78
78
  # @api public
79
79
  # @since 0.2.0
80
- def load_from_self
80
+ def load_from_self(format: :yaml)
81
81
  caller_location = caller(1, 1).first
82
- commands << Qonfig::Commands::LoadFromSelf.new(caller_location)
82
+ commands << Qonfig::Commands::LoadFromSelf.new(caller_location, format: format)
83
83
  end
84
84
 
85
85
  # @option convert_values [Boolean]
@@ -139,8 +139,8 @@ module Qonfig::DSL
139
139
  #
140
140
  # @api public
141
141
  # @since 0.14.0
142
- def expose_self(env:)
142
+ def expose_self(env:, format: :yaml)
143
143
  caller_location = caller(1, 1).first
144
- commands << Qonfig::Commands::ExposeSelf.new(caller_location, env: env)
144
+ commands << Qonfig::Commands::ExposeSelf.new(caller_location, env: env, format: format)
145
145
  end
146
146
  end
data/lib/qonfig/errors.rb CHANGED
@@ -81,6 +81,13 @@ module Qonfig
81
81
  # @since 0.5.0
82
82
  IncompatibleJSONStructureError = Class.new(Error)
83
83
 
84
+ # @see Qonfig::Commands::LoadFromSelf
85
+ # @see Qonfig::Commands::ExposeSelf
86
+ #
87
+ # @api public
88
+ # @since 0.15.0
89
+ IncompatibleEndDataStructureError = Class.new(Error)
90
+
84
91
  # @see Qonfig::Loaders::YAML
85
92
  #
86
93
  # @api public
@@ -111,6 +118,12 @@ module Qonfig
111
118
  # @since 0.7.0
112
119
  ExposeError = Class.new(Error)
113
120
 
121
+ # @see Qonfig::Loaders
122
+ #
123
+ # @api public
124
+ # @since 0.15.0
125
+ UnsupportedLoaderFormatError = Class.new(Error)
126
+
114
127
  # @see Qonfig::Plugin::TOMLFormat
115
128
  #
116
129
  # @api public
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @api private
4
+ # @since 0.15.0
5
+ module Qonfig::Loaders::EndData
6
+ class << self
7
+ # @param caller_location [String]
8
+ # @return [String]
9
+ #
10
+ # @raise [Qonfig::SelfDataNotFoundError]
11
+ #
12
+ # @api private
13
+ # @since 0.15.0
14
+ def extract(caller_location)
15
+ caller_file = caller_location.split(':').first
16
+
17
+ raise(
18
+ Qonfig::SelfDataNotFoundError,
19
+ "Caller file does not exist! (location: #{caller_location})"
20
+ ) unless File.exist?(caller_file)
21
+
22
+ data_match = IO.read(caller_file).match(/\n__END__\n(?<end_data>.*)/m)
23
+ raise Qonfig::SelfDataNotFoundError, '__END__ data not found!' unless data_match
24
+
25
+ end_data = data_match[:end_data]
26
+ raise Qonfig::SelfDataNotFoundError, '__END__ data not found!' unless end_data
27
+
28
+ end_data
29
+ end
30
+ end
31
+ end
@@ -6,4 +6,26 @@ module Qonfig::Loaders
6
6
  require_relative 'loaders/basic'
7
7
  require_relative 'loaders/json'
8
8
  require_relative 'loaders/yaml'
9
+ require_relative 'loaders/end_data'
10
+
11
+ class << self
12
+ # @param format [String, Symbol]
13
+ # @return [Module]
14
+ #
15
+ # @raise [Qonfig::UnsupportedLoaderFormatError]
16
+ #
17
+ # @api private
18
+ # @since 0.15.0
19
+ def resolve(format)
20
+ case format.to_s
21
+ when 'yaml', 'yml'
22
+ Qonfig::Loaders::YAML
23
+ when 'json'
24
+ Qonfig::Loaders::JSON
25
+ else
26
+ raise(Qonfig::UnsupportedLoaderFormatError, "<#{format}> format is not supported.")
27
+ end
28
+ end
29
+ alias_method :[], :resolve
30
+ end
9
31
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @api private
4
+ # @since 0.15.0
5
+ module Qonfig::Loaders
6
+ class << self
7
+ prepend(Module.new do
8
+ # @param format [String, Symbol]
9
+ # @return [Module]
10
+ #
11
+ # @raise [Qonfig::UnsupportedLoaderFormatError]
12
+ #
13
+ # @see Qonfig::Loaders.resolve
14
+ #
15
+ # @api private
16
+ # @since 0.15.0
17
+ def resolve(format)
18
+ return Qonfig::Loaders::TOML if format.to_s == 'toml'
19
+ super(format)
20
+ end
21
+ end)
22
+ end
23
+ end
@@ -15,6 +15,7 @@ class Qonfig::Plugins::TOML < Qonfig::Plugins::Abstract
15
15
  ) unless const_defined?('::TomlRB')
16
16
 
17
17
  require_relative 'toml/tomlrb_fixes'
18
+ require_relative 'toml/loaders'
18
19
  require_relative 'toml/loaders/toml'
19
20
  require_relative 'toml/uploaders/toml'
20
21
  require_relative 'toml/commands/load_from_toml'
@@ -5,5 +5,5 @@ module Qonfig
5
5
  #
6
6
  # @api public
7
7
  # @since 0.1.0
8
- VERSION = '0.14.0'
8
+ VERSION = '0.15.0'
9
9
  end
data/qonfig.gemspec CHANGED
@@ -14,9 +14,10 @@ Gem::Specification.new do |spec|
14
14
  spec.email = ['iamdaiver@icloud.com']
15
15
  spec.summary = 'Config object'
16
16
  spec.description = 'Config. Defined as a class. Used as an instance. ' \
17
- 'Support for inheritance and composition. ' \
18
- 'Lazy instantiation. Thread-safe. Command-style DSL. ' \
19
- 'Extremely simple to define. Extremely simple to use. That\'s all.'
17
+ 'Support for inheritance and composition. Lazy instantiation. Thread-safe. ' \
18
+ 'Command-style DSL. Validation layer. ' \
19
+ 'Support for YAML, TOML, JSON, __END__, ENV. ' \
20
+ 'Extremely simple to define. Extremely simple to use.'
20
21
  spec.homepage = 'https://github.com/0exp/qonfig'
21
22
  spec.license = 'MIT'
22
23
 
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.14.0
4
+ version: 0.15.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-08-28 00:00:00.000000000 Z
11
+ date: 2019-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coveralls
@@ -109,8 +109,9 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Config. Defined as a class. Used as an instance. Support for inheritance
112
- and composition. Lazy instantiation. Thread-safe. Command-style DSL. Extremely simple
113
- to define. Extremely simple to use. That's all.
112
+ and composition. Lazy instantiation. Thread-safe. Command-style DSL. Validation
113
+ layer. Support for YAML, TOML, JSON, __END__, ENV. Extremely simple to define. Extremely
114
+ simple to use.
114
115
  email:
115
116
  - iamdaiver@icloud.com
116
117
  executables: []
@@ -156,6 +157,7 @@ files:
156
157
  - lib/qonfig/errors.rb
157
158
  - lib/qonfig/loaders.rb
158
159
  - lib/qonfig/loaders/basic.rb
160
+ - lib/qonfig/loaders/end_data.rb
159
161
  - lib/qonfig/loaders/json.rb
160
162
  - lib/qonfig/loaders/yaml.rb
161
163
  - lib/qonfig/plugins.rb
@@ -167,6 +169,7 @@ files:
167
169
  - lib/qonfig/plugins/toml/commands/load_from_toml.rb
168
170
  - lib/qonfig/plugins/toml/data_set.rb
169
171
  - lib/qonfig/plugins/toml/dsl.rb
172
+ - lib/qonfig/plugins/toml/loaders.rb
170
173
  - lib/qonfig/plugins/toml/loaders/toml.rb
171
174
  - lib/qonfig/plugins/toml/tomlrb_fixes.rb
172
175
  - lib/qonfig/plugins/toml/uploaders/toml.rb