hocon 0.0.4 → 0.0.5
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.
- 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: []
|