class Tilt::Template

def evaluate(scope, locals, &block)

override render() may not support all features.
This method is only used by source generating templates. Subclasses that

locals specified and with support for yielding to the block.
evaluation is guaranteed to be performed in the scope object with the
Execute the compiled template and return the result string. Template
def evaluate(scope, locals, &block)
  if @fixed_locals
    locals_keys = EMPTY_ARRAY
  else
    locals_keys = locals.keys
    locals_keys.sort!{|x, y| x.to_s <=> y.to_s}
  end
  unless scope_class = @scope_class
    scope_class = case scope
    when Object
      Module === scope ? scope : scope.class
    else
      # :nocov:
      USE_BIND_CALL ? CLASS_METHOD.bind_call(scope) : CLASS_METHOD.bind(scope).call
      # :nocov:
    end
  end
  evaluate_method(compiled_method(locals_keys, scope_class), scope, locals, &block)
end