Class: Chutzen::Template

Inherits:
Object
  • Object
show all
Defined in:
lib/chutzen/template.rb,
lib/chutzen/template/syntax_error.rb

Overview

Replaces Chutzen queries and variable templates in a text template using a dictionary of values.

Defined Under Namespace

Classes: SyntaxError

Constant Summary collapse

Transformer =
Parslet::Transform.new do
  rule(expression: simple(:expression)) do
    Chutzen::Expression.new(expression.to_s, dictionary).result
  end
  rule(global: simple(:name)) { dictionary[name.to_s] }
  rule(string: simple(:value)) { value.to_s }
end

Instance Method Summary collapse

Constructor Details

#initialize(template, dictionary) ⇒ Template

Returns a new instance of Template.



19
20
21
22
23
24
25
26
27
# File 'lib/chutzen/template.rb', line 19

def initialize(template, dictionary)
  @template = Chutzen::TemplateParser.new.parse(template)
  @dictionary = dictionary
rescue Parslet::ParseFailed => e
  raise Chutzen::Template::SyntaxError.new(
    e.parse_failure_cause.ascii_tree,
    template: template
  )
end

Instance Method Details

#resultObject



29
30
31
32
33
34
35
36
37
# File 'lib/chutzen/template.rb', line 29

def result
  result = Transformer.apply(@template, dictionary: @dictionary)
  case result
  when Array
    result.join
  else
    result
  end
end