hocon 0.0.7 → 0.1.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 +7 -0
- data/README.md +4 -2
- data/lib/hocon.rb +2 -0
- data/lib/hocon/config.rb +1010 -0
- data/lib/hocon/config_error.rb +32 -2
- data/lib/hocon/config_factory.rb +46 -0
- data/lib/hocon/config_include_context.rb +49 -0
- data/lib/hocon/config_includer_file.rb +27 -0
- data/lib/hocon/config_list.rb +49 -0
- data/lib/hocon/config_mergeable.rb +74 -0
- data/lib/hocon/config_object.rb +144 -1
- data/lib/hocon/config_parse_options.rb +33 -9
- data/lib/hocon/config_parseable.rb +51 -0
- data/lib/hocon/config_render_options.rb +4 -2
- data/lib/hocon/config_resolve_options.rb +31 -0
- data/lib/hocon/config_syntax.rb +5 -2
- data/lib/hocon/config_util.rb +73 -0
- data/lib/hocon/config_value.rb +122 -0
- data/lib/hocon/config_value_factory.rb +66 -2
- data/lib/hocon/config_value_type.rb +5 -2
- data/lib/hocon/impl.rb +2 -0
- data/lib/hocon/impl/abstract_config_node.rb +29 -0
- data/lib/hocon/impl/abstract_config_node_value.rb +11 -0
- data/lib/hocon/impl/abstract_config_object.rb +148 -42
- data/lib/hocon/impl/abstract_config_value.rb +251 -11
- data/lib/hocon/impl/array_iterator.rb +19 -0
- data/lib/hocon/impl/config_boolean.rb +7 -1
- data/lib/hocon/impl/config_concatenation.rb +177 -28
- data/lib/hocon/impl/config_delayed_merge.rb +329 -0
- data/lib/hocon/impl/config_delayed_merge_object.rb +274 -0
- data/lib/hocon/impl/config_document_parser.rb +647 -0
- data/lib/hocon/impl/config_double.rb +44 -0
- data/lib/hocon/impl/config_impl.rb +143 -19
- data/lib/hocon/impl/config_impl_util.rb +18 -0
- data/lib/hocon/impl/config_include_kind.rb +10 -0
- data/lib/hocon/impl/config_int.rb +13 -1
- data/lib/hocon/impl/config_node_array.rb +11 -0
- data/lib/hocon/impl/config_node_comment.rb +19 -0
- data/lib/hocon/impl/config_node_complex_value.rb +54 -0
- data/lib/hocon/impl/config_node_concatenation.rb +11 -0
- data/lib/hocon/impl/config_node_field.rb +81 -0
- data/lib/hocon/impl/config_node_include.rb +33 -0
- data/lib/hocon/impl/config_node_object.rb +276 -0
- data/lib/hocon/impl/config_node_path.rb +48 -0
- data/lib/hocon/impl/config_node_root.rb +60 -0
- data/lib/hocon/impl/config_node_simple_value.rb +42 -0
- data/lib/hocon/impl/config_node_single_token.rb +17 -0
- data/lib/hocon/impl/config_null.rb +15 -7
- data/lib/hocon/impl/config_number.rb +43 -4
- data/lib/hocon/impl/config_parser.rb +403 -0
- data/lib/hocon/impl/config_reference.rb +142 -0
- data/lib/hocon/impl/config_string.rb +55 -7
- data/lib/hocon/impl/container.rb +29 -0
- data/lib/hocon/impl/default_transformer.rb +24 -15
- data/lib/hocon/impl/from_map_mode.rb +3 -1
- data/lib/hocon/impl/full_includer.rb +2 -0
- data/lib/hocon/impl/memo_key.rb +42 -0
- data/lib/hocon/impl/mergeable_value.rb +8 -0
- data/lib/hocon/impl/origin_type.rb +8 -2
- data/lib/hocon/impl/parseable.rb +455 -91
- data/lib/hocon/impl/path.rb +181 -59
- data/lib/hocon/impl/path_builder.rb +24 -3
- data/lib/hocon/impl/path_parser.rb +280 -0
- data/lib/hocon/impl/replaceable_merge_stack.rb +22 -0
- data/lib/hocon/impl/resolve_context.rb +254 -0
- data/lib/hocon/impl/resolve_memos.rb +21 -0
- data/lib/hocon/impl/resolve_result.rb +39 -0
- data/lib/hocon/impl/resolve_source.rb +354 -0
- data/lib/hocon/impl/resolve_status.rb +3 -1
- data/lib/hocon/impl/simple_config.rb +264 -10
- data/lib/hocon/impl/simple_config_document.rb +48 -0
- data/lib/hocon/impl/simple_config_list.rb +282 -8
- data/lib/hocon/impl/simple_config_object.rb +424 -88
- data/lib/hocon/impl/simple_config_origin.rb +263 -71
- data/lib/hocon/impl/simple_include_context.rb +31 -1
- data/lib/hocon/impl/simple_includer.rb +196 -1
- data/lib/hocon/impl/substitution_expression.rb +38 -0
- data/lib/hocon/impl/token.rb +17 -4
- data/lib/hocon/impl/token_type.rb +6 -2
- data/lib/hocon/impl/tokenizer.rb +339 -109
- data/lib/hocon/impl/tokens.rb +330 -79
- data/lib/hocon/impl/unmergeable.rb +14 -1
- data/lib/hocon/impl/unsupported_operation_error.rb +6 -0
- data/lib/hocon/impl/url.rb +37 -0
- data/lib/hocon/parser.rb +7 -0
- data/lib/hocon/parser/config_document.rb +92 -0
- data/lib/hocon/parser/config_document_factory.rb +36 -0
- data/lib/hocon/parser/config_node.rb +30 -0
- metadata +67 -43
- data/lib/hocon/impl/config_float.rb +0 -13
- data/lib/hocon/impl/parser.rb +0 -977
- data/lib/hocon/impl/properties_parser.rb +0 -83
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'hocon'
|
2
4
|
|
3
5
|
class Hocon::ConfigParseOptions
|
@@ -14,11 +16,7 @@ class Hocon::ConfigParseOptions
|
|
14
16
|
@includer = includer
|
15
17
|
end
|
16
18
|
|
17
|
-
def
|
18
|
-
@allow_missing
|
19
|
-
end
|
20
|
-
|
21
|
-
def with_syntax(syntax)
|
19
|
+
def set_syntax(syntax)
|
22
20
|
if @syntax == syntax
|
23
21
|
self
|
24
22
|
else
|
@@ -29,7 +27,33 @@ class Hocon::ConfigParseOptions
|
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
32
|
-
def
|
30
|
+
def set_origin_description(origin_description)
|
31
|
+
if @origin_description == origin_description
|
32
|
+
self
|
33
|
+
else
|
34
|
+
Hocon::ConfigParseOptions.new(@syntax,
|
35
|
+
origin_description,
|
36
|
+
@allow_missing,
|
37
|
+
@includer)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def set_allow_missing(allow_missing)
|
42
|
+
if allow_missing? == allow_missing
|
43
|
+
self
|
44
|
+
else
|
45
|
+
Hocon::ConfigParseOptions.new(@syntax,
|
46
|
+
@origin_description,
|
47
|
+
allow_missing,
|
48
|
+
@includer)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def allow_missing?
|
53
|
+
@allow_missing
|
54
|
+
end
|
55
|
+
|
56
|
+
def set_includer(includer)
|
33
57
|
if @includer == includer
|
34
58
|
self
|
35
59
|
else
|
@@ -44,10 +68,10 @@ class Hocon::ConfigParseOptions
|
|
44
68
|
if @includer == includer
|
45
69
|
self
|
46
70
|
elsif @includer
|
47
|
-
|
71
|
+
set_includer(@includer.with_fallback(includer))
|
48
72
|
else
|
49
|
-
|
73
|
+
set_includer(includer)
|
50
74
|
end
|
51
75
|
end
|
52
76
|
|
53
|
-
end
|
77
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'hocon'
|
4
|
+
require 'hocon/config_error'
|
5
|
+
|
6
|
+
#
|
7
|
+
# An opaque handle to something that can be parsed, obtained from
|
8
|
+
# {@link ConfigIncludeContext}.
|
9
|
+
#
|
10
|
+
# <p>
|
11
|
+
# <em>Do not implement this interface</em>; it should only be implemented by
|
12
|
+
# the config library. Arbitrary implementations will not work because the
|
13
|
+
# library internals assume a specific concrete implementation. Also, this
|
14
|
+
# interface is likely to grow new methods over time, so third-party
|
15
|
+
# implementations will break.
|
16
|
+
#
|
17
|
+
module Hocon::ConfigParseable
|
18
|
+
#
|
19
|
+
# Parse whatever it is. The options should come from
|
20
|
+
# {@link ConfigParseable#options options()} but you could tweak them if you
|
21
|
+
# like.
|
22
|
+
#
|
23
|
+
# @param options
|
24
|
+
# parse options, should be based on the ones from
|
25
|
+
# {@link ConfigParseable#options options()}
|
26
|
+
# @return the parsed object
|
27
|
+
#
|
28
|
+
def parse(options)
|
29
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigParseable` must implement `parse` (#{self.class})"
|
30
|
+
end
|
31
|
+
|
32
|
+
#
|
33
|
+
# Returns a {@link ConfigOrigin} describing the origin of the parseable
|
34
|
+
# item.
|
35
|
+
# @return the origin of the parseable item
|
36
|
+
#
|
37
|
+
def origin
|
38
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigParseable` must implement `origin` (#{self.class})"
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Get the initial options, which can be modified then passed to parse().
|
43
|
+
# These options will have the right description, includer, and other
|
44
|
+
# parameters already set up.
|
45
|
+
# @return the initial options
|
46
|
+
#
|
47
|
+
def options
|
48
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigParseable` must implement `options` (#{self.class})"
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'hocon'
|
2
4
|
|
3
5
|
class Hocon::ConfigRenderOptions
|
@@ -8,7 +10,7 @@ class Hocon::ConfigRenderOptions
|
|
8
10
|
@json = json
|
9
11
|
end
|
10
12
|
|
11
|
-
|
13
|
+
attr_accessor :origin_comments, :comments, :formatted, :json
|
12
14
|
|
13
15
|
def origin_comments?
|
14
16
|
@origin_comments
|
@@ -43,4 +45,4 @@ class Hocon::ConfigRenderOptions
|
|
43
45
|
def self.concise
|
44
46
|
Hocon::ConfigRenderOptions.new(false, false, false, true)
|
45
47
|
end
|
46
|
-
end
|
48
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'hocon'
|
4
|
+
|
5
|
+
class Hocon::ConfigResolveOptions
|
6
|
+
attr_reader :use_system_environment, :allow_unresolved
|
7
|
+
|
8
|
+
def initialize(use_system_environment, allow_unresolved)
|
9
|
+
@use_system_environment = use_system_environment
|
10
|
+
@allow_unresolved = allow_unresolved
|
11
|
+
end
|
12
|
+
|
13
|
+
def set_use_system_environment(value)
|
14
|
+
self.class.new(value, @allow_unresolved)
|
15
|
+
end
|
16
|
+
|
17
|
+
def set_allow_unresolved(value)
|
18
|
+
self.class.new(@use_system_environment, value)
|
19
|
+
end
|
20
|
+
|
21
|
+
class << self
|
22
|
+
|
23
|
+
def defaults
|
24
|
+
self.new(true, false)
|
25
|
+
end
|
26
|
+
|
27
|
+
def no_system
|
28
|
+
defaults.set_use_system_environment(false)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/hocon/config_syntax.rb
CHANGED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'hocon/impl/config_impl_util'
|
2
|
+
|
3
|
+
|
4
|
+
# Contains static utility methods
|
5
|
+
class Hocon::ConfigUtil
|
6
|
+
#
|
7
|
+
# Quotes and escapes a string, as in the JSON specification.
|
8
|
+
#
|
9
|
+
# @param string
|
10
|
+
# a string
|
11
|
+
# @return the string quoted and escaped
|
12
|
+
#
|
13
|
+
def self.quote_string(string)
|
14
|
+
Hocon::Impl::ConfigImplUtil.render_json_string(string)
|
15
|
+
end
|
16
|
+
|
17
|
+
#
|
18
|
+
# Converts a list of keys to a path expression, by quoting the path
|
19
|
+
# elements as needed and then joining them separated by a period. A path
|
20
|
+
# expression is usable with a {@link Config}, while individual path
|
21
|
+
# elements are usable with a {@link ConfigObject}.
|
22
|
+
# <p>
|
23
|
+
# See the overview documentation for {@link Config} for more detail on path
|
24
|
+
# expressions vs. keys.
|
25
|
+
#
|
26
|
+
# @param elements
|
27
|
+
# the keys in the path
|
28
|
+
# @return a path expression
|
29
|
+
# @throws ConfigException
|
30
|
+
# if there are no elements
|
31
|
+
#
|
32
|
+
def self.join_path(*elements)
|
33
|
+
Hocon::Impl::ConfigImplUtil.join_path(*elements)
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Converts a list of strings to a path expression, by quoting the path
|
38
|
+
# elements as needed and then joining them separated by a period. A path
|
39
|
+
# expression is usable with a {@link Config}, while individual path
|
40
|
+
# elements are usable with a {@link ConfigObject}.
|
41
|
+
# <p>
|
42
|
+
# See the overview documentation for {@link Config} for more detail on path
|
43
|
+
# expressions vs. keys.
|
44
|
+
#
|
45
|
+
# @param elements
|
46
|
+
# the keys in the path
|
47
|
+
# @return a path expression
|
48
|
+
# @throws ConfigException
|
49
|
+
# if the list is empty
|
50
|
+
#
|
51
|
+
def self.join_path_from_list(elements)
|
52
|
+
self.join_path(*elements)
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# Converts a path expression into a list of keys, by splitting on period
|
57
|
+
# and unquoting the individual path elements. A path expression is usable
|
58
|
+
# with a {@link Config}, while individual path elements are usable with a
|
59
|
+
# {@link ConfigObject}.
|
60
|
+
# <p>
|
61
|
+
# See the overview documentation for {@link Config} for more detail on path
|
62
|
+
# expressions vs. keys.
|
63
|
+
#
|
64
|
+
# @param path
|
65
|
+
# a path expression
|
66
|
+
# @return the individual keys in the path
|
67
|
+
# @throws ConfigException
|
68
|
+
# if the path expression is invalid
|
69
|
+
#
|
70
|
+
def self.split_path(path)
|
71
|
+
Hocon::Impl::ConfigImplUtil.split_path(path)
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'hocon'
|
4
|
+
require 'hocon/config_mergeable'
|
5
|
+
|
6
|
+
#
|
7
|
+
# An immutable value, following the <a href="http://json.org">JSON</a> type
|
8
|
+
# schema.
|
9
|
+
#
|
10
|
+
# <p>
|
11
|
+
# Because this object is immutable, it is safe to use from multiple threads and
|
12
|
+
# there's no need for "defensive copies."
|
13
|
+
#
|
14
|
+
# <p>
|
15
|
+
# <em>Do not implement interface {@code ConfigValue}</em>; it should only be
|
16
|
+
# implemented by the config library. Arbitrary implementations will not work
|
17
|
+
# because the library internals assume a specific concrete implementation.
|
18
|
+
# Also, this interface is likely to grow new methods over time, so third-party
|
19
|
+
# implementations will break.
|
20
|
+
#
|
21
|
+
module Hocon::ConfigValue
|
22
|
+
include Hocon::ConfigMergeable
|
23
|
+
|
24
|
+
#
|
25
|
+
# The origin of the value (file, line number, etc.), for debugging and
|
26
|
+
# error messages.
|
27
|
+
#
|
28
|
+
# @return where the value came from
|
29
|
+
#
|
30
|
+
def origin
|
31
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `origin` (#{self.class})"
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
#
|
36
|
+
# The {@link ConfigValueType} of the value; matches the JSON type schema.
|
37
|
+
#
|
38
|
+
# @return value's type
|
39
|
+
#
|
40
|
+
def value_type
|
41
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `value_type` (#{self.class})"
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# Returns the value as a plain Java boxed value, that is, a {@code String},
|
46
|
+
# {@code Number}, {@code Boolean}, {@code Map<String,Object>},
|
47
|
+
# {@code List<Object>}, or {@code null}, matching the {@link #valueType()}
|
48
|
+
# of this {@code ConfigValue}. If the value is a {@link ConfigObject} or
|
49
|
+
# {@link ConfigList}, it is recursively unwrapped.
|
50
|
+
# @return a plain Java value corresponding to this ConfigValue
|
51
|
+
#
|
52
|
+
def unwrapped
|
53
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `unwrapped` (#{self.class})"
|
54
|
+
end
|
55
|
+
|
56
|
+
#
|
57
|
+
# Renders the config value to a string, using the provided options.
|
58
|
+
#
|
59
|
+
# <p>
|
60
|
+
# If the config value has not been resolved (see {@link Config#resolve}),
|
61
|
+
# it's possible that it can't be rendered as valid HOCON. In that case the
|
62
|
+
# rendering should still be useful for debugging but you might not be able
|
63
|
+
# to parse it. If the value has been resolved, it will always be parseable.
|
64
|
+
#
|
65
|
+
# <p>
|
66
|
+
# If the config value has been resolved and the options disable all
|
67
|
+
# HOCON-specific features (such as comments), the rendering will be valid
|
68
|
+
# JSON. If you enable HOCON-only features such as comments, the rendering
|
69
|
+
# will not be valid JSON.
|
70
|
+
#
|
71
|
+
# @param options
|
72
|
+
# the rendering options
|
73
|
+
# @return the rendered value
|
74
|
+
#
|
75
|
+
def render(options)
|
76
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `render` (#{self.class})"
|
77
|
+
end
|
78
|
+
|
79
|
+
def with_fallback(other)
|
80
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `with_fallback` (#{self.class})"
|
81
|
+
end
|
82
|
+
|
83
|
+
#
|
84
|
+
# Places the value inside a {@link Config} at the given path. See also
|
85
|
+
# {@link ConfigValue#atKey(String)}.
|
86
|
+
#
|
87
|
+
# @param path
|
88
|
+
# path to store this value at.
|
89
|
+
# @return a {@code Config} instance containing this value at the given
|
90
|
+
# path.
|
91
|
+
#
|
92
|
+
def at_path(path)
|
93
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `at_path` (#{self.class})"
|
94
|
+
end
|
95
|
+
|
96
|
+
#
|
97
|
+
# Places the value inside a {@link Config} at the given key. See also
|
98
|
+
# {@link ConfigValue#atPath(String)}.
|
99
|
+
#
|
100
|
+
# @param key
|
101
|
+
# key to store this value at.
|
102
|
+
# @return a {@code Config} instance containing this value at the given key.
|
103
|
+
#
|
104
|
+
def at_key(key)
|
105
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `at_key` (#{self.class})"
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# Returns a {@code ConfigValue} based on this one, but with the given
|
110
|
+
# origin. This is useful when you are parsing a new format of file or setting
|
111
|
+
# comments for a single ConfigValue.
|
112
|
+
#
|
113
|
+
# @since 1.3.0
|
114
|
+
#
|
115
|
+
# @param origin the origin set on the returned value
|
116
|
+
# @return the new ConfigValue with the given origin
|
117
|
+
#
|
118
|
+
def with_origin(origin)
|
119
|
+
raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `with_origin` (#{self.class})"
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
@@ -1,10 +1,74 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'hocon'
|
2
4
|
require 'hocon/impl/config_impl'
|
3
5
|
|
4
6
|
class Hocon::ConfigValueFactory
|
5
7
|
ConfigImpl = Hocon::Impl::ConfigImpl
|
6
8
|
|
7
|
-
|
9
|
+
#
|
10
|
+
# Creates a {@link ConfigValue} from a plain value, which may be
|
11
|
+
# a <code>Boolean</code>, <code>Number</code>, <code>String</code>,
|
12
|
+
# <code>Hash</code>, or <code>nil</code>. A
|
13
|
+
# <code>Hash</code> must be a <code>Hash</code> from String to more values
|
14
|
+
# that can be supplied to <code>from_any_ref()</code>. A <code>Hash</code>
|
15
|
+
# will become a {@link ConfigObject} and an <code>Array</code> will become a
|
16
|
+
# {@link ConfigList}.
|
17
|
+
#
|
18
|
+
# <p>
|
19
|
+
# In a <code>Hash</code> passed to <code>from_any_ref()</code>, the map's keys
|
20
|
+
# are plain keys, not path expressions. So if your <code>Hash</code> has a
|
21
|
+
# key "foo.bar" then you will get one object with a key called "foo.bar",
|
22
|
+
# rather than an object with a key "foo" containing another object with a
|
23
|
+
# key "bar".
|
24
|
+
#
|
25
|
+
# <p>
|
26
|
+
# The origin_description will be used to set the origin() field on the
|
27
|
+
# ConfigValue. It should normally be the name of the file the values came
|
28
|
+
# from, or something short describing the value such as "default settings".
|
29
|
+
# The origin_description is prefixed to error messages so users can tell
|
30
|
+
# where problematic values are coming from.
|
31
|
+
#
|
32
|
+
# <p>
|
33
|
+
# Supplying the result of ConfigValue.unwrapped() to this function is
|
34
|
+
# guaranteed to work and should give you back a ConfigValue that matches
|
35
|
+
# the one you unwrapped. The re-wrapped ConfigValue will lose some
|
36
|
+
# information that was present in the original such as its origin, but it
|
37
|
+
# will have matching values.
|
38
|
+
#
|
39
|
+
# <p>
|
40
|
+
# If you pass in a <code>ConfigValue</code> to this
|
41
|
+
# function, it will be returned unmodified. (The
|
42
|
+
# <code>origin_description</code> will be ignored in this
|
43
|
+
# case.)
|
44
|
+
#
|
45
|
+
# <p>
|
46
|
+
# This function throws if you supply a value that cannot be converted to a
|
47
|
+
# ConfigValue, but supplying such a value is a bug in your program, so you
|
48
|
+
# should never handle the exception. Just fix your program (or report a bug
|
49
|
+
# against this library).
|
50
|
+
#
|
51
|
+
# @param object
|
52
|
+
# object to convert to ConfigValue
|
53
|
+
# @param origin_description
|
54
|
+
# name of origin file or brief description of what the value is
|
55
|
+
# @return a new value
|
56
|
+
#
|
57
|
+
def self.from_any_ref(object, origin_description = nil)
|
8
58
|
ConfigImpl.from_any_ref(object, origin_description)
|
9
59
|
end
|
10
|
-
|
60
|
+
|
61
|
+
#
|
62
|
+
# See the {@link #from_any_ref(Object,String)} documentation for details
|
63
|
+
#
|
64
|
+
# <p>
|
65
|
+
# See also {@link ConfigFactory#parse_map(Map)} which interprets the keys in
|
66
|
+
# the map as path expressions.
|
67
|
+
#
|
68
|
+
# @param values map from keys to plain ruby values
|
69
|
+
# @return a new {@link ConfigObject}
|
70
|
+
#
|
71
|
+
def self.from_map(values, origin_description = nil)
|
72
|
+
ConfigImpl.from_any_ref(values, origin_description)
|
73
|
+
end
|
74
|
+
end
|