[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],
|
[:measure, NO_OVERRIDE],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
:irb_whereami, :Whereami, "irb/cmd/whereami",
|
||||||
|
[:whereami, NO_OVERRIDE],
|
||||||
|
],
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# Installs the default irb commands:
|
# Installs the default irb commands:
|
||||||
|
@ -391,5 +391,22 @@ module TestIRB
|
|||||||
assert_empty err
|
assert_empty err
|
||||||
assert_match(/^instance variables: @a\n/, out)
|
assert_match(/^instance variables: @a\n/, out)
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user