| Class | Tilt::ERBTemplate |
| In: |
lib/sinatra/tilt.rb
|
| Parent: | Template |
ERB template implementation. See: www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html
# File lib/sinatra/tilt.rb, line 216
216: def compile!
217: @engine = ::ERB.new(data, options[:safe], options[:trim], '@_out_buf')
218: end
# File lib/sinatra/tilt.rb, line 224
224: def evaluate(scope, locals, &block)
225: source, offset = local_assignment_code(locals)
226: source = [source, template_source].join("\n")
227:
228: original_out_buf =
229: scope.instance_variables.any? { |var| var.to_sym == :@_out_buf } &&
230: scope.instance_variable_get(:@_out_buf)
231:
232: scope.instance_eval source, eval_file, line - offset
233:
234: output = scope.instance_variable_get(:@_out_buf)
235: scope.instance_variable_set(:@_out_buf, original_out_buf)
236:
237: output
238: end
# File lib/sinatra/tilt.rb, line 212
212: def initialize_engine
213: require_template_library 'erb' unless defined? ::ERB
214: end