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:
parent
5f72962a09
commit
232433f224
3 changed files with 42 additions and 0 deletions
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…
Reference in a new issue