Skip to content

Commit

Permalink
Add whereami command
Browse files Browse the repository at this point in the history
  • Loading branch information
k0kubun committed Mar 21, 2021
1 parent dc6cbb6 commit bc822e4
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
20 changes: 20 additions & 0 deletions lib/irb/cmd/whereami.rb
@@ -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:
5 changes: 5 additions & 0 deletions lib/irb/extend-command.rb
Expand Up @@ -135,6 +135,11 @@ def irb_context
[:measure, NO_OVERRIDE],
],

[
:irb_whereami, :Whereami, "irb/cmd/whereami",
[:whereami, NO_OVERRIDE],
],

]

# Installs the default irb commands:
Expand Down
17 changes: 17 additions & 0 deletions test/irb/test_cmd.rb
Expand Up @@ -389,5 +389,22 @@ def test_ls
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

0 comments on commit bc822e4

Please sign in to comment.