class Tilt::Template

def evaluate(scope, locals, &block)

specified and with support for yielding to the block.
is guaranteed to be performed in the scope object with the locals
evaluated with instance_eval. In any case, template executation
does not mix in the CompileSite module, the template source is
reused given identical locals keys. When the scope object
the Tilt::CompileSite module, the template is compiled to a method and
Process the template and return the result. When the scope mixes in
def evaluate(scope, locals, &block)
  if scope.respond_to?(:__tilt__)
    method_name = compiled_method_name(locals.keys)
    if scope.respond_to?(method_name)
      scope.send(method_name, locals, &block)
    else
      compile_template_method(method_name, locals)
      scope.send(method_name, locals, &block)
    end
  else
    evaluate_source(scope, locals, &block)
  end
end