hocon 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -0
- data/lib/hocon.rb +10 -2
- data/lib/hocon/config_error.rb +31 -9
- data/lib/hocon/config_factory.rb +7 -9
- data/lib/hocon/config_object.rb +4 -4
- data/lib/hocon/config_parse_options.rb +43 -43
- data/lib/hocon/config_render_options.rb +41 -41
- data/lib/hocon/config_syntax.rb +7 -7
- data/lib/hocon/config_value_factory.rb +10 -0
- data/lib/hocon/config_value_type.rb +23 -23
- data/lib/hocon/impl.rb +5 -4
- data/lib/hocon/impl/abstract_config_object.rb +49 -0
- data/lib/hocon/impl/abstract_config_value.rb +16 -0
- data/lib/hocon/impl/config_boolean.rb +25 -0
- data/lib/hocon/impl/config_float.rb +4 -0
- data/lib/hocon/impl/config_impl.rb +125 -0
- data/lib/hocon/impl/config_impl_util.rb +8 -0
- data/lib/hocon/impl/config_null.rb +25 -0
- data/lib/hocon/impl/default_transformer.rb +97 -0
- data/lib/hocon/impl/from_map_mode.rb +16 -0
- data/lib/hocon/impl/parser.rb +185 -92
- data/lib/hocon/impl/path.rb +77 -0
- data/lib/hocon/impl/path_builder.rb +1 -2
- data/lib/hocon/impl/properties_parser.rb +83 -0
- data/lib/hocon/impl/simple_config.rb +76 -0
- data/lib/hocon/impl/simple_config_list.rb +1 -0
- data/lib/hocon/impl/simple_config_object.rb +67 -0
- data/lib/hocon/impl/tokenizer.rb +8 -0
- data/lib/hocon/impl/tokens.rb +7 -1
- metadata +59 -15
- checksums.yaml +0 -7
data/lib/hocon/impl/path.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
require 'hocon/impl'
|
2
|
+
require 'hocon/impl/path_builder'
|
3
|
+
require 'hocon/config_error'
|
2
4
|
require 'stringio'
|
3
5
|
|
4
6
|
class Hocon::Impl::Path
|
7
|
+
|
8
|
+
ConfigBugOrBrokenError = Hocon::ConfigError::ConfigBugOrBrokenError
|
9
|
+
|
5
10
|
# this doesn't have a very precise meaning, just to reduce
|
6
11
|
# noise from quotes in the rendered path for average cases
|
7
12
|
def self.has_funky_chars?(s)
|
@@ -34,6 +39,46 @@ class Hocon::Impl::Path
|
|
34
39
|
end
|
35
40
|
attr_reader :first, :remainder
|
36
41
|
|
42
|
+
def first
|
43
|
+
@first
|
44
|
+
end
|
45
|
+
|
46
|
+
def remainder
|
47
|
+
@remainder
|
48
|
+
end
|
49
|
+
|
50
|
+
def parent
|
51
|
+
if remainder.nil?
|
52
|
+
return nil
|
53
|
+
end
|
54
|
+
|
55
|
+
pb = Hocon::Impl::PathBuilder.new
|
56
|
+
p = self
|
57
|
+
while not p.remainder.nil?
|
58
|
+
pb.append_key(p.first)
|
59
|
+
p = p.remainder
|
60
|
+
end
|
61
|
+
pb.result
|
62
|
+
end
|
63
|
+
|
64
|
+
def last
|
65
|
+
p = self
|
66
|
+
while not p.remainder.nil?
|
67
|
+
p = p.remainder
|
68
|
+
end
|
69
|
+
p.first
|
70
|
+
end
|
71
|
+
|
72
|
+
def length
|
73
|
+
count = 1
|
74
|
+
p = remainder
|
75
|
+
while not p.nil? do
|
76
|
+
count += 1
|
77
|
+
p = p.remainder
|
78
|
+
end
|
79
|
+
return count
|
80
|
+
end
|
81
|
+
|
37
82
|
#
|
38
83
|
# toString() is a debugging-oriented version while this is an
|
39
84
|
# error-message-oriented human-readable one.
|
@@ -56,4 +101,36 @@ class Hocon::Impl::Path
|
|
56
101
|
@remainder.append_to_string_builder(sb)
|
57
102
|
end
|
58
103
|
end
|
104
|
+
|
105
|
+
def sub_path_to_end(remove_from_front)
|
106
|
+
count = remove_from_front
|
107
|
+
p = self
|
108
|
+
while (not p.nil?) && count > 0 do
|
109
|
+
count -= 1
|
110
|
+
p = p.remainder
|
111
|
+
end
|
112
|
+
p
|
113
|
+
end
|
114
|
+
|
115
|
+
def sub_path(first_index, last_index)
|
116
|
+
if last_index < first_index
|
117
|
+
raise ConfigBugOrBrokenError.new("bad call to sub_path", nil)
|
118
|
+
end
|
119
|
+
from = sub_path_to_end(first_index)
|
120
|
+
pb = Hocon::Impl::PathBuilder.new
|
121
|
+
count = last_index - first_index
|
122
|
+
while count > 0 do
|
123
|
+
count -= 1
|
124
|
+
pb.append_key(from.first)
|
125
|
+
from = from.remainder
|
126
|
+
if from.nil?
|
127
|
+
raise ConfigBugOrBrokenError.new("sub_path last_index out of range #{last_index}", nil)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
pb.result
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.new_path(path)
|
134
|
+
Hocon::Impl::Parser.parse_path(path)
|
135
|
+
end
|
59
136
|
end
|
@@ -2,7 +2,6 @@ require 'hocon/impl'
|
|
2
2
|
require 'hocon/impl/path'
|
3
3
|
|
4
4
|
class Hocon::Impl::PathBuilder
|
5
|
-
Path = Hocon::Impl::Path
|
6
5
|
|
7
6
|
def initialize
|
8
7
|
@keys = []
|
@@ -27,7 +26,7 @@ class Hocon::Impl::PathBuilder
|
|
27
26
|
remainder = nil
|
28
27
|
while !@keys.empty?
|
29
28
|
key = @keys.pop
|
30
|
-
remainder = Path.new(key, remainder)
|
29
|
+
remainder = Hocon::Impl::Path.new(key, remainder)
|
31
30
|
end
|
32
31
|
@result = remainder
|
33
32
|
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'hocon/impl'
|
2
|
+
require 'hocon/config_error'
|
3
|
+
require 'hocon/impl/config_impl'
|
4
|
+
|
5
|
+
class Hocon::Impl::PropertiesParser
|
6
|
+
def from_path_map(origin, path_map, converted_from_properties)
|
7
|
+
# First, build a list of paths that will have values, either string or
|
8
|
+
# object values.
|
9
|
+
scope_paths = Set.new
|
10
|
+
value_paths = Set.new
|
11
|
+
path_map.each_key do |path|
|
12
|
+
value_paths.add(path)
|
13
|
+
|
14
|
+
next_path = path.parent
|
15
|
+
while not next_path.nil? do
|
16
|
+
scope_paths.add(next_path)
|
17
|
+
next_path = next_path.parent
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
if converted_from_properties
|
22
|
+
# If any string values are also objects containing other values,
|
23
|
+
# drop those string values - objects "win".
|
24
|
+
value_paths = value_paths - scope_paths
|
25
|
+
else
|
26
|
+
# If we didn't start out as properties, then this is an error.
|
27
|
+
value_paths.each do |path|
|
28
|
+
if scope_paths.include?(path)
|
29
|
+
raise ConfigBugOrBrokenError.new("In the map, path '#{path.render}' occurs as both" +
|
30
|
+
" the parent object of a value and as a value. Because Map " +
|
31
|
+
"has no defined ordering, this is a broken situation.", nil)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Create maps for the object-valued values.
|
37
|
+
root = Hash.new
|
38
|
+
scopes = Hash.new
|
39
|
+
|
40
|
+
value_paths.each do |path|
|
41
|
+
parent_path = path.parent
|
42
|
+
parent = (not parent_path.nil?) ? scopes[parent_path] : root
|
43
|
+
|
44
|
+
last = path.last
|
45
|
+
raw_value = path_map.get(path)
|
46
|
+
if converted_from_properties
|
47
|
+
if raw_value.is_a?(String)
|
48
|
+
value = Hocon::Impl::ConfigString.new(origin, raw_value)
|
49
|
+
else
|
50
|
+
value = nil
|
51
|
+
end
|
52
|
+
else
|
53
|
+
value = Hocon::Impl::ConfigImpl.from_any_ref_impl(path_map[path], origin, Hocon::Impl::FromMapMode::KEYS_ARE_PATHS)
|
54
|
+
end
|
55
|
+
if not value.nil?
|
56
|
+
parent[last, value]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Make a list of scope paths from longest to shortest, so children go
|
61
|
+
# before parents.
|
62
|
+
sorted_scope_paths = Array.new
|
63
|
+
sorted_scope_paths = sorted_scope_paths + scope_paths
|
64
|
+
sorted_scope_paths.sort! do |a,b|
|
65
|
+
b.length <=> a.length
|
66
|
+
end
|
67
|
+
|
68
|
+
# Create ConfigObject for each scope map, working from children to
|
69
|
+
# parents to avoid modifying any already-created ConfigObject. This is
|
70
|
+
# where we need the sorted list.
|
71
|
+
sorted_scope_paths.each do |scope_path|
|
72
|
+
scope = scopes[scope_path]
|
73
|
+
|
74
|
+
parent_path = scope_path.parent
|
75
|
+
parent = (not parent_path.nil?) ? scopes[parent_path] : root
|
76
|
+
|
77
|
+
o = Hocon::Impl::SimpleConfigObject.new(origin, scope, Hocon::Impl::ResolveStatus::RESOLVED, false)
|
78
|
+
parent[scope_path.last, o]
|
79
|
+
end
|
80
|
+
|
81
|
+
Hocon::Impl::SimpleConfigObject.new(origin, root, Hocon::Impl::ResolveStatus::RESOLVED, false)
|
82
|
+
end
|
83
|
+
end
|
@@ -1,6 +1,19 @@
|
|
1
1
|
require 'hocon/impl'
|
2
|
+
require 'hocon/config_value_type'
|
3
|
+
require 'hocon/impl/path'
|
4
|
+
require 'hocon/impl/default_transformer'
|
5
|
+
require 'hocon/impl/config_impl'
|
2
6
|
|
3
7
|
class Hocon::Impl::SimpleConfig
|
8
|
+
|
9
|
+
ConfigMissingError = Hocon::ConfigError::ConfigMissingError
|
10
|
+
ConfigNotResolvedError = Hocon::ConfigError::ConfigNotResolvedError
|
11
|
+
ConfigNullError = Hocon::ConfigError::ConfigNullError
|
12
|
+
ConfigWrongTypeError = Hocon::ConfigError::ConfigWrongTypeError
|
13
|
+
ConfigValueType = Hocon::ConfigValueType
|
14
|
+
Path = Hocon::Impl::Path
|
15
|
+
DefaultTransformer = Hocon::Impl::DefaultTransformer
|
16
|
+
|
4
17
|
def initialize(object)
|
5
18
|
@object = object
|
6
19
|
end
|
@@ -8,4 +21,67 @@ class Hocon::Impl::SimpleConfig
|
|
8
21
|
def root
|
9
22
|
@object
|
10
23
|
end
|
24
|
+
|
25
|
+
def find_key(me, key, expected, original_path)
|
26
|
+
v = me.peek_assuming_resolved(key, original_path)
|
27
|
+
if v.nil?
|
28
|
+
raise ConfigMissingError.new(nil, "No configuration setting found for key '#{original_path.render}'", nil)
|
29
|
+
end
|
30
|
+
|
31
|
+
if not expected.nil?
|
32
|
+
v = DefaultTransformer.transform(v, expected)
|
33
|
+
end
|
34
|
+
|
35
|
+
if v.value_type == ConfigValueType::NULL
|
36
|
+
raise ConfigNullError.new(v.origin,
|
37
|
+
(ConfigNullError.make_message(original_path.render,
|
38
|
+
(not expected.nil?) ? expected.name : nil)),
|
39
|
+
nil)
|
40
|
+
elsif (not expected.nil?) && v.value_type != expected
|
41
|
+
raise ConfigWrongTypeError.new(v.origin,
|
42
|
+
"#{original_path.render} has type #{v.value_type.name} " +
|
43
|
+
"rather than #{expected.name}",
|
44
|
+
nil)
|
45
|
+
else
|
46
|
+
return v
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def find(me, path, expected, original_path)
|
51
|
+
key = path.first
|
52
|
+
rest = path.remainder
|
53
|
+
if rest.nil?
|
54
|
+
find_key(me, key, expected, original_path)
|
55
|
+
else
|
56
|
+
o = find_key(me, key, ConfigValueType::OBJECT,
|
57
|
+
original_path.sub_path(0, original_path.length - rest.length))
|
58
|
+
raise "Error: object o is nil" unless not o.nil?
|
59
|
+
find(o, rest, expected, original_path)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_value(path)
|
64
|
+
parsed_path = Path.new_path(path)
|
65
|
+
find(@object, parsed_path, nil, parsed_path)
|
66
|
+
end
|
67
|
+
|
68
|
+
def has_path(path_expression)
|
69
|
+
path = Path.new_path(path_expression)
|
70
|
+
begin
|
71
|
+
peeked = @object.peek_path(path)
|
72
|
+
rescue ConfigNotResolvedError => e
|
73
|
+
raise Hocon::Impl::ConfigImpl.improve_not_resolved(path, e)
|
74
|
+
end
|
75
|
+
(not peeked.nil?) && peeked.value_type != ConfigValueType::NULL
|
76
|
+
end
|
77
|
+
|
78
|
+
def without_path(path_expression)
|
79
|
+
path = Path.new_path(path_expression)
|
80
|
+
self.class.new(root.without_path(path))
|
81
|
+
end
|
82
|
+
|
83
|
+
def with_value(path_expression, v)
|
84
|
+
path = Path.new_path(path_expression)
|
85
|
+
self.class.new(root.with_value(path, v))
|
86
|
+
end
|
11
87
|
end
|
@@ -2,9 +2,15 @@ require 'hocon/impl'
|
|
2
2
|
require 'hocon/impl/simple_config_origin'
|
3
3
|
require 'hocon/impl/abstract_config_object'
|
4
4
|
require 'hocon/impl/resolve_status'
|
5
|
+
require 'hocon/config_error'
|
5
6
|
require 'set'
|
6
7
|
|
7
8
|
class Hocon::Impl::SimpleConfigObject < Hocon::Impl::AbstractConfigObject
|
9
|
+
|
10
|
+
ConfigBugOrBrokenError = Hocon::ConfigError::ConfigBugOrBrokenError
|
11
|
+
ResolveStatus = Hocon::Impl::ResolveStatus
|
12
|
+
SimpleConfigOrigin = Hocon::Impl::SimpleConfigOrigin
|
13
|
+
|
8
14
|
def self.empty_missing(base_origin)
|
9
15
|
self.new(
|
10
16
|
Hocon::Impl::SimpleConfigOrigin.new_simple("#{base_origin.description} (not found)"),
|
@@ -175,4 +181,65 @@ class Hocon::Impl::SimpleConfigObject < Hocon::Impl::AbstractConfigObject
|
|
175
181
|
@value.empty?
|
176
182
|
end
|
177
183
|
|
184
|
+
def attempt_peek_with_partial_resolve(key)
|
185
|
+
@value[key]
|
186
|
+
end
|
187
|
+
|
188
|
+
def without_path(path)
|
189
|
+
key = path.first
|
190
|
+
remainder = path.remainder
|
191
|
+
v = @value[key]
|
192
|
+
|
193
|
+
if (not v.nil?) && (not remainder.nil?) && v.is_a?(Hocon::Impl::AbstractConfigObject)
|
194
|
+
v = v.without_path(remainder)
|
195
|
+
updated = @value.clone
|
196
|
+
updated[key] = v
|
197
|
+
return Hocon::Impl::SimpleConfigObject.new(origin, updated,
|
198
|
+
ResolveStatus.from_values(updated.values), @ignores_fallbacks)
|
199
|
+
elsif (not remainder.nil?) || v.nil?
|
200
|
+
return self
|
201
|
+
else
|
202
|
+
smaller = Hash.new
|
203
|
+
@value.each do |old_key, old_value|
|
204
|
+
if not old_key == key
|
205
|
+
smaller[old_key] = old_value
|
206
|
+
end
|
207
|
+
end
|
208
|
+
return Hocon::Impl::SimpleConfigObject.new(origin, smaller,
|
209
|
+
ResolveStatus.from_values(smaller.values), @ignores_fallbacks)
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
def with_value(path, v)
|
214
|
+
key = path.first
|
215
|
+
remainder = path.remainder
|
216
|
+
|
217
|
+
if remainder.nil?
|
218
|
+
return with_value_impl(key, v)
|
219
|
+
else
|
220
|
+
child = @value[key]
|
221
|
+
if (not child.nil?) && child.is_a?(Hocon::Impl::AbstractConfigObject)
|
222
|
+
return with_value_impl(key, child.with_value(remainder, v))
|
223
|
+
else
|
224
|
+
subtree = v.at_path(
|
225
|
+
SimpleConfigOrigin.new_simple("with_value(#{remainder.render})"), remainder)
|
226
|
+
with_value_impl(key, subtree.root)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
def with_value_impl(key, v)
|
232
|
+
if v.nil?
|
233
|
+
raise ConfigBugOrBrokenError.new("Trying to store null ConfigValue in a ConfigObject", nil)
|
234
|
+
end
|
235
|
+
|
236
|
+
new_map = Hash.new
|
237
|
+
if @value.empty?
|
238
|
+
new_map[key] = v
|
239
|
+
else
|
240
|
+
new_map = @value.clone
|
241
|
+
new_map[key] = v
|
242
|
+
end
|
243
|
+
self.class.new(origin, new_map, ResolveStatus.from_values(new_map.values), @ignores_fallbacks)
|
244
|
+
end
|
178
245
|
end
|
data/lib/hocon/impl/tokenizer.rb
CHANGED
@@ -2,6 +2,7 @@ require 'hocon/impl'
|
|
2
2
|
require 'hocon/impl/config_impl_util'
|
3
3
|
require 'hocon/impl/tokens'
|
4
4
|
require 'stringio'
|
5
|
+
require 'forwardable'
|
5
6
|
|
6
7
|
class Hocon::Impl::Tokenizer
|
7
8
|
Tokens = Hocon::Impl::Tokens
|
@@ -10,6 +11,7 @@ class Hocon::Impl::Tokenizer
|
|
10
11
|
end
|
11
12
|
|
12
13
|
class TokenIterator
|
14
|
+
extend Forwardable
|
13
15
|
class WhitespaceSaver
|
14
16
|
def initialize
|
15
17
|
@whitespace = StringIO.new
|
@@ -79,6 +81,8 @@ class Hocon::Impl::Tokenizer
|
|
79
81
|
(c != "\n") and (Hocon::Impl::ConfigImplUtil.whitespace?(c))
|
80
82
|
end
|
81
83
|
|
84
|
+
def_delegator :@tokens, :each
|
85
|
+
|
82
86
|
def initialize(origin, input, allow_comments)
|
83
87
|
@origin = origin
|
84
88
|
@input = input
|
@@ -361,6 +365,10 @@ class Hocon::Impl::Tokenizer
|
|
361
365
|
end
|
362
366
|
t
|
363
367
|
end
|
368
|
+
|
369
|
+
def empty?
|
370
|
+
@tokens.empty?
|
371
|
+
end
|
364
372
|
end
|
365
373
|
|
366
374
|
|
data/lib/hocon/impl/tokens.rb
CHANGED
@@ -3,6 +3,7 @@ require 'hocon/impl/token'
|
|
3
3
|
require 'hocon/impl/token_type'
|
4
4
|
require 'hocon/impl/config_number'
|
5
5
|
require 'hocon/impl/config_string'
|
6
|
+
require 'hocon/impl/config_boolean'
|
6
7
|
|
7
8
|
# FIXME the way the subclasses of Token are private with static isFoo and accessors is kind of ridiculous.
|
8
9
|
class Hocon::Impl::Tokens
|
@@ -10,6 +11,7 @@ class Hocon::Impl::Tokens
|
|
10
11
|
TokenType = Hocon::Impl::TokenType
|
11
12
|
ConfigNumber = Hocon::Impl::ConfigNumber
|
12
13
|
ConfigString = Hocon::Impl::ConfigString
|
14
|
+
ConfigBoolean = Hocon::Impl::ConfigBoolean
|
13
15
|
|
14
16
|
START = Token.new_without_origin(TokenType::START, "start of file")
|
15
17
|
EOF = Token.new_without_origin(TokenType::EOF, "end of file")
|
@@ -103,6 +105,10 @@ class Hocon::Impl::Tokens
|
|
103
105
|
new_value(ConfigNumber.new_number(origin, value, original_text))
|
104
106
|
end
|
105
107
|
|
108
|
+
def self.new_boolean(origin, value)
|
109
|
+
new_value(ConfigBoolean.new(origin, value))
|
110
|
+
end
|
111
|
+
|
106
112
|
def self.comment?(t)
|
107
113
|
t.is_a?(Comment)
|
108
114
|
end
|
@@ -154,4 +160,4 @@ class Hocon::Impl::Tokens
|
|
154
160
|
def self.problem?(t)
|
155
161
|
t.is_a?(Problem)
|
156
162
|
end
|
157
|
-
end
|
163
|
+
end
|
metadata
CHANGED
@@ -1,63 +1,102 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hocon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Chris Price
|
8
9
|
- Wayne Warren
|
10
|
+
- Dai Akatsuka
|
11
|
+
- Preben Ingvaldsen
|
9
12
|
autorequire:
|
10
13
|
bindir: bin
|
11
14
|
cert_chain: []
|
12
|
-
date: 2014-
|
15
|
+
date: 2014-10-01 00:00:00.000000000 Z
|
13
16
|
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: bundler
|
19
|
+
requirement: !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ~>
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '1.5'
|
25
|
+
type: :development
|
26
|
+
prerelease: false
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.5'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rake
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
type: :development
|
42
|
+
prerelease: false
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
14
49
|
- !ruby/object:Gem::Dependency
|
15
50
|
name: rspec
|
16
51
|
requirement: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
17
53
|
requirements:
|
18
|
-
- -
|
54
|
+
- - ~>
|
19
55
|
- !ruby/object:Gem::Version
|
20
56
|
version: '2.14'
|
21
57
|
type: :development
|
22
58
|
prerelease: false
|
23
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
24
61
|
requirements:
|
25
|
-
- -
|
62
|
+
- - ~>
|
26
63
|
- !ruby/object:Gem::Version
|
27
64
|
version: '2.14'
|
28
|
-
description:
|
29
|
-
library to Ruby
|
65
|
+
description: == A port of the Java {Typesafe Config}[https://github.com/typesafehub/config]
|
66
|
+
library to Ruby
|
30
67
|
email: chris@puppetlabs.com
|
31
68
|
executables: []
|
32
69
|
extensions: []
|
33
70
|
extra_rdoc_files: []
|
34
71
|
files:
|
35
|
-
- LICENSE
|
36
|
-
- README.md
|
37
|
-
- lib/hocon.rb
|
38
72
|
- lib/hocon/config_error.rb
|
39
73
|
- lib/hocon/config_factory.rb
|
40
74
|
- lib/hocon/config_object.rb
|
41
75
|
- lib/hocon/config_parse_options.rb
|
42
76
|
- lib/hocon/config_render_options.rb
|
43
77
|
- lib/hocon/config_syntax.rb
|
78
|
+
- lib/hocon/config_value_factory.rb
|
44
79
|
- lib/hocon/config_value_type.rb
|
45
|
-
- lib/hocon/impl.rb
|
46
80
|
- lib/hocon/impl/abstract_config_object.rb
|
47
81
|
- lib/hocon/impl/abstract_config_value.rb
|
82
|
+
- lib/hocon/impl/config_boolean.rb
|
48
83
|
- lib/hocon/impl/config_concatenation.rb
|
49
84
|
- lib/hocon/impl/config_float.rb
|
50
85
|
- lib/hocon/impl/config_impl.rb
|
51
86
|
- lib/hocon/impl/config_impl_util.rb
|
52
87
|
- lib/hocon/impl/config_int.rb
|
88
|
+
- lib/hocon/impl/config_null.rb
|
53
89
|
- lib/hocon/impl/config_number.rb
|
54
90
|
- lib/hocon/impl/config_string.rb
|
91
|
+
- lib/hocon/impl/default_transformer.rb
|
92
|
+
- lib/hocon/impl/from_map_mode.rb
|
55
93
|
- lib/hocon/impl/full_includer.rb
|
56
94
|
- lib/hocon/impl/origin_type.rb
|
57
95
|
- lib/hocon/impl/parseable.rb
|
58
96
|
- lib/hocon/impl/parser.rb
|
59
97
|
- lib/hocon/impl/path.rb
|
60
98
|
- lib/hocon/impl/path_builder.rb
|
99
|
+
- lib/hocon/impl/properties_parser.rb
|
61
100
|
- lib/hocon/impl/resolve_status.rb
|
62
101
|
- lib/hocon/impl/simple_config.rb
|
63
102
|
- lib/hocon/impl/simple_config_list.rb
|
@@ -70,28 +109,33 @@ files:
|
|
70
109
|
- lib/hocon/impl/tokenizer.rb
|
71
110
|
- lib/hocon/impl/tokens.rb
|
72
111
|
- lib/hocon/impl/unmergeable.rb
|
112
|
+
- lib/hocon/impl.rb
|
113
|
+
- lib/hocon.rb
|
114
|
+
- LICENSE
|
115
|
+
- README.md
|
73
116
|
homepage: https://github.com/cprice404/ruby-hocon
|
74
117
|
licenses:
|
75
118
|
- Apache License, v2
|
76
|
-
metadata: {}
|
77
119
|
post_install_message:
|
78
120
|
rdoc_options: []
|
79
121
|
require_paths:
|
80
122
|
- lib
|
81
123
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
82
125
|
requirements:
|
83
|
-
- -
|
126
|
+
- - ! '>='
|
84
127
|
- !ruby/object:Gem::Version
|
85
128
|
version: '0'
|
86
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
87
131
|
requirements:
|
88
|
-
- -
|
132
|
+
- - ! '>='
|
89
133
|
- !ruby/object:Gem::Version
|
90
134
|
version: '0'
|
91
135
|
requirements: []
|
92
136
|
rubyforge_project:
|
93
|
-
rubygems_version:
|
137
|
+
rubygems_version: 1.8.23.2
|
94
138
|
signing_key:
|
95
|
-
specification_version:
|
139
|
+
specification_version: 3
|
96
140
|
summary: HOCON Config Library
|
97
141
|
test_files: []
|