Method: Puppet::Parser::Scope#lookupvar

Defined in:
lib/puppet/parser/scope.rb

#lookupvar(name, options = {}) ⇒ Object

Lookup a variable within this scope using the Puppet language’s scoping rules. Variables can be qualified using just as in a manifest.

Parameters:

  • name (String)

    the variable name to lookup

Returns:

  • Object the value of the variable, or nil if it’s not found



400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
# File 'lib/puppet/parser/scope.rb', line 400

def lookupvar(name, options = {})
  unless name.is_a? String
    raise Puppet::ParseError, "Scope variable name #{name.inspect} is a #{name.class}, not a string"
  end

  table = @ephemeral.last

  if name =~ /^(.*)::(.+)$/
    class_name = $1
    variable_name = $2
    lookup_qualified_variable(class_name, variable_name, options)

  # TODO: optimize with an assoc instead, this searches through scopes twice for a hit
  elsif table.include?(name)
    table[name]
  else
    next_scope = inherited_scope || enclosing_scope
    if next_scope
      next_scope.lookupvar(name, options)
    else
      variable_not_found(name)
    end
  end
end