mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
class Pry
|
|
module Testable
|
|
module Variables
|
|
#
|
|
# @example
|
|
# temporary_constants(:Foo, :Bar) do
|
|
# Foo = Class.new(RuntimeError)
|
|
# Bar = Class.new(RuntimeError)
|
|
# end
|
|
# Foo # => NameError
|
|
# Bar # => NameError
|
|
#
|
|
# @param [Array<Symbol>] names
|
|
# An array of constant names that be defined by a block,
|
|
# and removed by this method afterwards.
|
|
#
|
|
# @return [void]
|
|
#
|
|
def temporary_constants(*names)
|
|
names.each do |name|
|
|
Object.remove_const name if Object.const_defined?(name)
|
|
end
|
|
yield
|
|
ensure
|
|
names.each do |name|
|
|
Object.remove_const name if Object.const_defined?(name)
|
|
end
|
|
end
|
|
|
|
#
|
|
# @param [String] name
|
|
# The name of a variable.
|
|
#
|
|
# @param [String] value
|
|
# Its value.
|
|
#
|
|
# @param [Binding] binding
|
|
# The binding object to insert a variable into.
|
|
#
|
|
# @return [void]
|
|
#
|
|
def insert_variable(name, value, binding)
|
|
Pry.current[:pry_local] = value
|
|
binding.eval("#{name} = ::Pry.current[:pry_local]")
|
|
ensure
|
|
Pry.current[:pry_local] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|