20 lines
643 B
Ruby
20 lines
643 B
Ruby
require 'erb'
|
|
|
|
module Templates
|
|
def render(name, locals = {})
|
|
# caller_module = Module.nesting.first.to_s.split('::').last&.downcase || 'common'
|
|
caller_file = caller_locations(1, 1)[0].absolute_path
|
|
inferred_dir = File.basename(caller_file).sub(/^install-/, '').sub(/\.rb$/, '')
|
|
puts "caller name: #{inferred_dir}"
|
|
|
|
template_path = File.join(__dir__, 'data', 'templates', inferred_dir, "#{name}.erb")
|
|
template = File.read(template_path)
|
|
erb = ERB.new(template)
|
|
|
|
# erb.result(binding)
|
|
|
|
context = Struct.new(*locals.keys).new(*locals.values)
|
|
erb.result(context.instance_eval { binding })
|
|
end
|
|
end
|
|
|