[ruby/irb] Add whereami command
https://github.com/ruby/irb/commit/bc822e4aac
This commit is contained in:
parent
5f72962a09
commit
232433f224
20
lib/irb/cmd/whereami.rb
Normal file
20
lib/irb/cmd/whereami.rb
Normal file
@ -0,0 +1,20 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative "nop"
|
||||
|
||||
# :stopdoc:
|
||||
module IRB
|
||||
module ExtendCommand
|
||||
class Whereami < Nop
|
||||
def execute(*)
|
||||
code = irb_context.workspace.code_around_binding
|
||||
if code
|
||||
puts code
|
||||
else
|
||||
puts "The current context doesn't have code."
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
# :startdoc:
|
@ -135,6 +135,11 @@ module IRB # :nodoc:
|
||||
[:measure, NO_OVERRIDE],
|
||||
],
|
||||
|
||||
[
|
||||
:irb_whereami, :Whereami, "irb/cmd/whereami",
|
||||
[:whereami, NO_OVERRIDE],
|
||||
],
|
||||
|
||||
]
|
||||
|
||||
# Installs the default irb commands:
|
||||
|
@ -391,5 +391,22 @@ module TestIRB
|
||||
assert_empty err
|
||||
assert_match(/^instance variables: @a\n/, out)
|
||||
end
|
||||
|
||||
def test_whereami
|
||||
IRB.init_config(nil)
|
||||
workspace = IRB::WorkSpace.new(self)
|
||||
irb = IRB::Irb.new(workspace)
|
||||
IRB.conf[:MAIN_CONTEXT] = irb.context
|
||||
input = TestInputMethod.new([
|
||||
"whereami\n",
|
||||
])
|
||||
irb = IRB::Irb.new(IRB::WorkSpace.new(Object.new), input)
|
||||
irb.context.return_format = "=> %s\n"
|
||||
out, err = capture_output do
|
||||
irb.eval_input
|
||||
end
|
||||
assert_empty err
|
||||
assert_match(/^From: .+ @ line \d+ :\n/, out)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user