config_mapper 1.5.0 → 1.6.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 +4 -4
- data/README.md +6 -0
- data/lib/config_mapper/config_struct.rb +13 -0
- data/lib/config_mapper/mapping_error.rb +26 -0
- data/lib/config_mapper/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cad2a71b7850554a0a981b18d91bb1198cd16f8a
|
4
|
+
data.tar.gz: 305d415a5243d35b97d4a9b881fe51fad55217c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91509bfa9e31c03bb8093c434942980cbd8616fffb22b7d0b4bf21f64edd01b750b7e9dd270c2d491452ae191455dcdf9c49724feb1d9f5076c3421c54d16c6d
|
7
|
+
data.tar.gz: 423dcae0bc0c14b13979fbf1a10980b43c5e669a23fa521ad8b864fba965f83f3e5ee5bab1c569a8b6c2c47de017570964bd08ae7ef3b0cd36f37cb20c3da6b1
|
data/README.md
CHANGED
@@ -246,6 +246,12 @@ state.configure_with(data)
|
|
246
246
|
#=> }
|
247
247
|
```
|
248
248
|
|
249
|
+
`ConfigStruct.from_data` instantiates an object from data, raising an exception if errors are encountered:
|
250
|
+
|
251
|
+
```ruby
|
252
|
+
state = State.from_data(data)
|
253
|
+
```
|
254
|
+
|
249
255
|
## License
|
250
256
|
|
251
257
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "config_mapper"
|
2
2
|
require "config_mapper/config_dict"
|
3
3
|
require "config_mapper/factory"
|
4
|
+
require "config_mapper/mapping_error"
|
4
5
|
require "config_mapper/validator"
|
5
6
|
|
6
7
|
module ConfigMapper
|
@@ -11,6 +12,18 @@ module ConfigMapper
|
|
11
12
|
|
12
13
|
class << self
|
13
14
|
|
15
|
+
# Instantiate from data.
|
16
|
+
#
|
17
|
+
# @param attribute_values [Hash] attribute values
|
18
|
+
# @raise [ConfigMapper::MappingError] on error
|
19
|
+
#
|
20
|
+
def from_data(attribute_values)
|
21
|
+
new.tap do |instance|
|
22
|
+
errors = instance.configure_with(attribute_values)
|
23
|
+
raise MappingError, errors if errors.any?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
14
27
|
# Defines reader and writer methods for the specified attribute.
|
15
28
|
#
|
16
29
|
# A `:default` value may be specified; otherwise, the attribute is
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ConfigMapper
|
2
|
+
|
3
|
+
# Thrown to indicate a problem parsing config.
|
4
|
+
#
|
5
|
+
class MappingError < StandardError
|
6
|
+
|
7
|
+
def initialize(errors_by_field)
|
8
|
+
@errors_by_field = errors_by_field
|
9
|
+
super(generate_message)
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_reader :errors_by_field
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def generate_message
|
17
|
+
result = "configuration error"
|
18
|
+
errors_by_field.each do |field, error|
|
19
|
+
result << "\n #{field[1..-1]} - #{error}"
|
20
|
+
end
|
21
|
+
result
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config_mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- lib/config_mapper/config_struct.rb
|
68
68
|
- lib/config_mapper/factory.rb
|
69
69
|
- lib/config_mapper/mapper.rb
|
70
|
+
- lib/config_mapper/mapping_error.rb
|
70
71
|
- lib/config_mapper/object_mapper.rb
|
71
72
|
- lib/config_mapper/validator.rb
|
72
73
|
- lib/config_mapper/version.rb
|
@@ -90,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
91
|
version: '0'
|
91
92
|
requirements: []
|
92
93
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.6.
|
94
|
+
rubygems_version: 2.6.13
|
94
95
|
signing_key:
|
95
96
|
specification_version: 4
|
96
97
|
summary: Maps config data onto plain old objects
|