class StackMaster::TemplateCompiler

Constants

TemplateCompilationFailed

Public Class Methods

compile(config, template_compiler, template_dir, template, compile_time_parameters, compiler_options = {}) click to toggle source
# File lib/stack_master/template_compiler.rb, line 5
def self.compile(config, template_compiler, template_dir, template, compile_time_parameters, compiler_options = {})
  compiler = if template_compiler
               find_compiler(template_compiler)
             else
               template_compiler_for_stack(template, config)
             end
  compiler.require_dependencies
  compiler.compile(template_dir, template, compile_time_parameters, compiler_options)
rescue StandardError => e
  raise TemplateCompilationFailed, "Failed to compile #{template}"
end
find_compiler(name) click to toggle source
# File lib/stack_master/template_compiler.rb, line 35
def self.find_compiler(name)
  @compilers.fetch(name.to_sym) do
    raise "Unknown compiler #{name.inspect}"
  end
end
register(name, klass) click to toggle source
# File lib/stack_master/template_compiler.rb, line 17
def self.register(name, klass)
  @compilers ||= {}
  @compilers[name] = klass
end

Private Class Methods

file_ext(template) click to toggle source
# File lib/stack_master/template_compiler.rb, line 30
def self.file_ext(template)
  File.extname(template).gsub('.', '').to_sym
end
template_compiler_for_stack(template, config) click to toggle source

private

# File lib/stack_master/template_compiler.rb, line 23
def self.template_compiler_for_stack(template, config)
  ext = file_ext(template)
  compiler_name = config.template_compilers.fetch(ext)
  find_compiler(compiler_name)
end