Method: Puppet::Parser::TemplateWrapper#result

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

#result(string = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/puppet/parser/templatewrapper.rb', line 73

def result(string = nil)
  if string
    template_source = "inline template"
  else
    string = Puppet::FileSystem.read_preserve_line_endings(@__file__)
    template_source = @__file__
  end

  # Expose all the variables in our scope as instance variables of the
  # current object, making it possible to access them without conflict
  # to the regular methods.
  escaped_template_source = template_source.gsub(/%/, '%%')
  benchmark(:debug, _("Bound template variables for %{template_source} in %%{seconds} seconds") % { template_source: escaped_template_source }) do
    scope.to_hash.each do |name, value|
      realname = name.gsub(/[^\w]/, "_")
      instance_variable_set("@#{realname}", value)
    end
  end

  result = nil
  benchmark(:debug, _("Interpolated template %{template_source} in %%{seconds} seconds") % { template_source: escaped_template_source }) do
    template = Puppet::Util.create_erb(string)
    template.filename = @__file__
    result = template.result(binding)
  end

  result
end