Class: Rdm::Templates::TemplateRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/rdm/templates/template_renderer.rb

Constant Summary collapse

TEMPLATE_VARIABLE =
/<%=\s*([\w\d-]+)\s*%>/i

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template, locals) ⇒ TemplateRenderer

Returns a new instance of TemplateRenderer.



16
17
18
19
20
# File 'lib/rdm/templates/template_renderer.rb', line 16

def initialize(template, locals)
  @template = template
  @locals   = locals
  @undefined_variables = []
end

Class Method Details

.get_undefined_variables(template, locals = {}) ⇒ Object



11
12
13
# File 'lib/rdm/templates/template_renderer.rb', line 11

def get_undefined_variables(template, locals = {})
  Rdm::Templates::TemplateRenderer.new(template, locals).get_undefined_variables
end

.handle(template, locals = {}) ⇒ Object



7
8
9
# File 'lib/rdm/templates/template_renderer.rb', line 7

def handle(template, locals = {})
  Rdm::Templates::TemplateRenderer.new(template, locals).handle
end

Instance Method Details

#get_undefined_variablesObject



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rdm/templates/template_renderer.rb', line 28

def get_undefined_variables
  Rdm::Utils::RenderUtil.render(@template, @locals)

  @undefined_variables
rescue NameError => e
  raise NoMethodError, "Undefined method for template. Please, add :#{e.name} method to .rdm/helpers/render_helper.rb file!" if @undefined_variables.include?(e.name)

  @locals[e.name] = e.name.to_s
  @undefined_variables.push(e.name)

  retry
end

#handleObject



22
23
24
25
26
# File 'lib/rdm/templates/template_renderer.rb', line 22

def handle 
  raise Rdm::Errors::TemplateVariableNotDefined, get_undefined_variables.map(&:to_s).join(';') if get_undefined_variables.any?

  Rdm::Utils::RenderUtil.render(@template, @locals)
end