Class: Chutzen::Template
- Inherits:
-
Object
- Object
- Chutzen::Template
- 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
-
#initialize(template, dictionary) ⇒ Template
constructor
A new instance of Template.
- #result ⇒ Object
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
#result ⇒ Object
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 |