Module: Hocon::ConfigValue

Includes:
ConfigMergeable
Included in:
ConfigList, ConfigObject, Impl::AbstractConfigValue, Impl::Container
Defined in:
lib/hocon/config_value.rb

Overview

An immutable value, following the <a href=“json.org”>JSON</a> type schema.

<p> Because this object is immutable, it is safe to use from multiple threads and there’s no need for “defensive copies.”

<p> Do not implement interface ConfigValue; it should only be implemented by the config library. Arbitrary implementations will not work because the library internals assume a specific concrete implementation. Also, this interface is likely to grow new methods over time, so third-party implementations will break.

Instance Method Summary collapse

Instance Method Details

#at_key(key) ⇒ Object

Places the value inside a Config at the given key. See also ConfigValue#atPath(String).

Parameters:

  • key

    key to store this value at.

Raises:



104
105
106
# File 'lib/hocon/config_value.rb', line 104

def at_key(key)
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `at_key` (#{self.class})"
end

#at_path(path) ⇒ Object

Places the value inside a Config at the given path. See also ConfigValue#atKey(String).

Parameters:

  • path

    path to store this value at.

Raises:



92
93
94
# File 'lib/hocon/config_value.rb', line 92

def at_path(path)
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `at_path` (#{self.class})"
end

#originObject

The origin of the value (file, line number, etc.), for debugging and error messages.

Returns:

  • where the value came from

Raises:



30
31
32
# File 'lib/hocon/config_value.rb', line 30

def origin
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `origin` (#{self.class})"
end

#render(options) ⇒ Object

Renders the config value to a string, using the provided options.

<p> If the config value has not been resolved (see Config#resolve), it’s possible that it can’t be rendered as valid HOCON. In that case the rendering should still be useful for debugging but you might not be able to parse it. If the value has been resolved, it will always be parseable.

<p> If the config value has been resolved and the options disable all HOCON-specific features (such as comments), the rendering will be valid JSON. If you enable HOCON-only features such as comments, the rendering will not be valid JSON.

Parameters:

  • options

    the rendering options

Returns:

  • the rendered value

Raises:



75
76
77
# File 'lib/hocon/config_value.rb', line 75

def render(options)
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `render` (#{self.class})"
end

#unwrappedObject

Returns the value as a plain Java boxed value, that is, a String, Number, Boolean, Map<String,Object>, List<Object>, or null, matching the #valueType() of this ConfigValue. If the value is a ConfigObject or ConfigList, it is recursively unwrapped.

Returns:

  • a plain Java value corresponding to this ConfigValue

Raises:



52
53
54
# File 'lib/hocon/config_value.rb', line 52

def unwrapped
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `unwrapped` (#{self.class})"
end

#value_typeObject

The ConfigValueType of the value; matches the JSON type schema.

Returns:

  • value’s type

Raises:



40
41
42
# File 'lib/hocon/config_value.rb', line 40

def value_type
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `value_type` (#{self.class})"
end

#with_fallback(other) ⇒ Object



79
80
81
# File 'lib/hocon/config_value.rb', line 79

def with_fallback(other)
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `with_fallback` (#{self.class})"
end

#with_origin(origin) ⇒ Object

Returns a ConfigValue based on this one, but with the given origin. This is useful when you are parsing a new format of file or setting comments for a single ConfigValue.

Parameters:

  • origin

    the origin set on the returned value

Returns:

  • the new ConfigValue with the given origin

Raises:

Since:

  • 1.3.0



118
119
120
# File 'lib/hocon/config_value.rb', line 118

def with_origin(origin)
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of `ConfigValue` must implement `with_origin` (#{self.class})"
end