class Rake::Funnel::Support::TemplateEngine

Public Class Methods

render(template, filename = nil, binding = nil) click to toggle source
# File lib/rake/funnel/support/template_engine.rb, line 10
def render(template, filename = nil, binding = nil)
  render = erb(template)
  render.filename = filename
  render.result(binding || top_level_binding)
end

Private Class Methods

erb(template) click to toggle source
# File lib/rake/funnel/support/template_engine.rb, line 18
def erb(template)
  template = replace_at_markers(template)
  trim_mode = '%<>'

  return ERB.new(template, trim_mode: trim_mode) if RUBY_VERSION >= '2.6'

  ERB.new(template, nil, trim_mode)
end
replace_at_markers(template) click to toggle source
# File lib/rake/funnel/support/template_engine.rb, line 27
def replace_at_markers(template)
  tags = /(@\w[\w\.]+\w@)/

  (template || '').gsub(tags) do |match|
    "<%= #{match[1...-1]} %>"
  end
end
top_level_binding() click to toggle source
# File lib/rake/funnel/support/template_engine.rb, line 35
def top_level_binding
  TOPLEVEL_BINDING.dup
end