File: config_list.rb

package info (click to toggle)
ruby-hocon 1.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 768 kB
  • sloc: ruby: 7,903; makefile: 4
file content (49 lines) | stat: -rw-r--r-- 1,706 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# encoding: utf-8

require_relative '../hocon'
require_relative '../hocon/config_value'
require_relative '../hocon/config_error'

#
# Subtype of {@link ConfigValue} representing a list value, as in JSON's
# {@code [1,2,3]} syntax.
#
# <p>
# {@code ConfigList} implements {@code java.util.List<ConfigValue>} so you can
# use it like a regular Java list. Or call {@link #unwrapped()} to unwrap the
# list elements into plain Java values.
#
# <p>
# Like all {@link ConfigValue} subtypes, {@code ConfigList} is immutable. This
# makes it threadsafe and you never have to create "defensive copies." The
# mutator methods from {@link java.util.List} all throw
# {@link java.lang.UnsupportedOperationException}.
#
# <p>
# The {@link ConfigValue#valueType} method on a list returns
# {@link ConfigValueType#LIST}.
#
# <p>
# <em>Do not implement {@code ConfigList}</em>; 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.
#
#
module Hocon::ConfigList
  include Hocon::ConfigValue

  #
  # Recursively unwraps the list, returning a list of plain Java values such
  # as Integer or String or whatever is in the list.
  #
  def unwrapped
    raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of ConfigValue should provide their own implementation of `unwrapped` (#{self.class})"
  end

  def with_origin(origin)
    raise Hocon::ConfigError::ConfigBugOrBrokenError, "subclasses of ConfigValue should provide their own implementation of `with_origin` (#{self.class})"
  end

end