class ERB

def new_toplevel(vars = nil)

[default binding]: rdoc-ref:ERB@Default+Binding

defined within the binding.
prevent it from overwriting a variable of the same name already
each symbol `symbol` is defined as a new variable to hide and
Argument `symbols` is an array of symbols;

See [Default Binding][default binding].

used to create a default binding for a call to #result.
Returns a new binding based on `TOPLEVEL_BINDING`;

new_toplevel(symbols) -> new_binding
:call-seq:

:markup: markdown
def new_toplevel(vars = nil)
  b = TOPLEVEL_BINDING
  if vars
    vars = vars.select {|v| b.local_variable_defined?(v)}
    unless vars.empty?
      return b.eval("tap {|;#{vars.join(',')}| break binding}")
    end
  end
  b.dup
end