class Puppet::Pops::Evaluator::EppEvaluator

Handler of Epp call/evaluation from the epp and ::inline_epp functions

Public Class Methods

epp(scope, file, env_name, template_args = nil) click to toggle source
# File lib/puppet/pops/evaluator/epp_evaluator.rb, line 22
def self.epp(scope, file, env_name, template_args = nil)
  unless file.is_a?(String)
    raise ArgumentError, "epp(): the first argument must be a String with the filename, got a #{file.class}"
  end

  file = file + ".epp" unless file =~ /\.epp$/
  scope.debug "Retrieving epp template #{file}"
  template_file = Puppet::Parser::Files.find_template(file, env_name)
  unless template_file
    raise Puppet::ParseError, "Could not find template '#{file}'"
  end

  # Parse and validate the source
  parser = Puppet::Pops::Parser::EvaluatingParser::EvaluatingEppParser.new
  begin
    result = parser.parse_file(template_file)
  rescue Puppet::ParseError => e
    raise ArgumentError, "epp(): Invalid EPP: #{e.message}"
  end

  # Evaluate (and check template_args)
  evaluate(parser, 'epp', scope, true, result, template_args)
end
inline_epp(scope, epp_source, template_args = nil) click to toggle source
# File lib/puppet/pops/evaluator/epp_evaluator.rb, line 5
def self.inline_epp(scope, epp_source, template_args = nil)
  unless epp_source.is_a?(String)
    raise ArgumentError, "inline_epp(): the first argument must be a String with the epp source text, got a #{epp_source.class}"
  end

  # Parse and validate the source
  parser = Puppet::Pops::Parser::EvaluatingParser::EvaluatingEppParser.new
  begin
    result = parser.parse_string(epp_source, 'inlined-epp-text')
  rescue Puppet::ParseError => e
    raise ArgumentError, "inline_epp(): Invalid EPP: #{e.message}"
  end

  # Evaluate (and check template_args)
  evaluate(parser, 'inline_epp', scope, false, result, template_args)
end