Class: StackMaster::TemplateCompiler

Inherits:
Object
  • Object
show all
Defined in:
lib/stack_master/template_compiler.rb

Constant Summary collapse

TemplateCompilationFailed =
Class.new(RuntimeError)

Class Method Summary collapse

Class Method Details

.compile(config, template_compiler, template_dir, template, compile_time_parameters, compiler_options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# 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.new("Failed to compile #{template} with error #{e}.\n#{e.backtrace}")
end

.find_compiler(name) ⇒ Object



35
36
37
38
39
# 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) ⇒ Object



17
18
19
20
# File 'lib/stack_master/template_compiler.rb', line 17

def self.register(name, klass)
  @compilers ||= {}
  @compilers[name] = klass
end