1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/irb] Add whereami command

https://github.com/ruby/irb/commit/bc822e4aac
This commit is contained in:
Takashi Kokubun 2021-03-18 01:18:42 -07:00 committed by git
parent 5f72962a09
commit 232433f224
3 changed files with 42 additions and 0 deletions

20
lib/irb/cmd/whereami.rb Normal file
View 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:

View file

@ -135,6 +135,11 @@ module IRB # :nodoc:
[:measure, NO_OVERRIDE],
],
[
:irb_whereami, :Whereami, "irb/cmd/whereami",
[:whereami, NO_OVERRIDE],
],
]
# Installs the default irb commands:

View file

@ -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