File: config_factory.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 (63 lines) | stat: -rw-r--r-- 2,360 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# encoding: utf-8

require_relative '../hocon'
require_relative '../hocon/impl/parseable'
require_relative '../hocon/config_parse_options'
require_relative '../hocon/impl/config_impl'
require_relative '../hocon/config_factory'

## Please note that the `parse` operations will simply create a ConfigValue
## and do nothing else, whereas the `load` operations will perform a higher-level
## operation and will resolve substitutions. If you have substitutions in your
## configuration, use a `load` function
class Hocon::ConfigFactory
  def self.parse_file(file_path, options = Hocon::ConfigParseOptions.defaults)
    Hocon::Impl::Parseable.new_file(file_path, options).parse.to_config
  end

  def self.parse_string(string, options = Hocon::ConfigParseOptions.defaults)
    Hocon::Impl::Parseable.new_string(string, options).parse.to_config
  end

  def self.parse_file_any_syntax(file_base_name, options)
    Hocon::Impl::ConfigImpl.parse_file_any_syntax(file_base_name, options).to_config
  end

  def self.empty(origin_description = nil)
    Hocon::Impl::ConfigImpl.empty_config(origin_description)
  end

  # Because of how optional arguments work, if either parse or resolve options is supplied
  # both must be supplied. load_file_with_parse_options or load_file_with_resolve_options
  # can be used instead, or the argument you don't care about in load_file can be nil
  #
  # e.g.:
  # load_file("settings", my_parse_options, nil)
  # is equivalent to:
  # load_file_with_parse_options("settings", my_parse_options)
  def self.load_file(file_base_name, parse_options = nil, resolve_options = nil)
    parse_options ||= Hocon::ConfigParseOptions.defaults
    resolve_options ||= Hocon::ConfigResolveOptions.defaults

    config = Hocon::ConfigFactory.parse_file_any_syntax(file_base_name, parse_options)

    self.load_from_config(config, resolve_options)
  end

  def self.load_file_with_parse_options(file_base_name, parse_options)
    self.load_file(file_base_name, parse_options, nil)
  end

  def self.load_file_with_resolve_options(file_base_name, resolve_options)
    self.load_file(file_base_name, nil, resolve_options)
  end

  def self.load_from_config(config, resolve_options)

    config.with_fallback(self.default_reference).resolve(resolve_options)
  end

  def self.default_reference
    Hocon::Impl::ConfigImpl.default_reference
  end
end