Server IP : 66.29.132.122 / Your IP : 18.116.60.158 Web Server : LiteSpeed System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : admazpex ( 531) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/self/root/proc/thread-self/root/proc/thread-self/root/opt/puppetlabs/puppet/lib/ruby/vendor_gems/gems/hocon-1.3.1/lib/hocon/impl/ |
Upload File : |
# encoding: utf-8 require 'hocon' require 'hocon/impl' require 'hocon/impl/abstract_config_value' class Hocon::Impl::ConfigReference include Hocon::Impl::Unmergeable include Hocon::Impl::AbstractConfigValue # Require these lazily, to avoid circular dependencies require 'hocon/impl/resolve_source' require 'hocon/impl/resolve_result' NotPossibleToResolve = Hocon::Impl::AbstractConfigValue::NotPossibleToResolve UnresolvedSubstitutionError = Hocon::ConfigError::UnresolvedSubstitutionError attr_reader :expr, :prefix_length def initialize(origin, expr, prefix_length = 0) super(origin) @expr = expr @prefix_length = prefix_length end def unmerged_values [self] end # ConfigReference should be a firewall against NotPossibleToResolve going # further up the stack; it should convert everything to ConfigException. # This way it 's impossible for NotPossibleToResolve to "escape" since # any failure to resolve has to start with a ConfigReference. def resolve_substitutions(context, source) new_context = context.add_cycle_marker(self) begin result_with_path = source.lookup_subst(new_context, @expr, @prefix_length) new_context = result_with_path.result.context if result_with_path.result.value != nil if Hocon::Impl::ConfigImpl.trace_substitution_enabled Hocon::Impl::ConfigImpl.trace( "recursively resolving #{result_with_path} which was the resolution of #{expr} against #{source}", context.depth) end recursive_resolve_source = Hocon::Impl::ResolveSource.new( result_with_path.path_from_root.last, result_with_path.path_from_root) if Hocon::Impl::ConfigImpl.trace_substitution_enabled Hocon::Impl::ConfigImpl.trace("will recursively resolve against #{recursive_resolve_source}", context.depth) end result = new_context.resolve(result_with_path.result.value, recursive_resolve_source) v = result.value new_context = result.context else v = nil end rescue NotPossibleToResolve => e if Hocon::Impl::ConfigImpl.trace_substitution_enabled Hocon::Impl::ConfigImpl.trace( "not possible to resolve #{expr}, cycle involved: #{e.trace_string}", new_context.depth) end if @expr.optional v = nil else raise UnresolvedSubstitutionError.new( origin, "#{@expr} was part of a cycle of substitutions involving #{e.trace_string}", e) end end if v == nil && !@expr.optional if new_context.options.allow_unresolved ResolveResult.make(new_context.remove_cycle_marker(self), self) else raise UnresolvedSubstitutionError.new(origin, @expr.to_s) end else Hocon::Impl::ResolveResult.make(new_context.remove_cycle_marker(self), v) end end def value_type raise not_resolved end def unwrapped raise not_resolved end def new_copy(new_origin) Hocon::Impl::ConfigReference.new(new_origin, @expr, @prefix_length) end def ignores_fallbacks? false end def resolve_status Hocon::Impl::ResolveStatus::UNRESOLVED end def relativized(prefix) new_expr = @expr.change_path(@expr.path.prepend(prefix)) Hocon::Impl::ConfigReference.new(origin, new_expr, @prefix_length + prefix.length) end def can_equal(other) other.is_a? Hocon::Impl::ConfigReference end def ==(other) # note that "origin" is deliberately NOT part of equality if other.is_a? Hocon::Impl::ConfigReference can_equal(other) && @expr == other.expr end end def hash # note that "origin" is deliberately NOT part of equality @expr.hash end def render_value_to_sb(sb, indent, at_root, options) sb << @expr.to_s end def expression @expr end private def not_resolved error_message = "need to Config#resolve, see the API docs for Config#resolve; substitution not resolved: #{self}" Hocon::ConfigError::ConfigNotResolvedError.new(error_message, nil) end end