ruby-changes:65603
From: Takashi <ko1@a...>
Date: Sun, 21 Mar 2021 13:40:36 +0900 (JST)
Subject: [ruby-changes:65603] 232433f224 (master): [ruby/irb] Add whereami command
https://git.ruby-lang.org/ruby.git/commit/?id=232433f224 From 232433f22423fb6a3ff7a610140c711a964d3b3d Mon Sep 17 00:00:00 2001 From: Takashi Kokubun <takashikkbn@g...> Date: Thu, 18 Mar 2021 01:18:42 -0700 Subject: [ruby/irb] Add whereami command https://github.com/ruby/irb/commit/bc822e4aac --- lib/irb/cmd/whereami.rb | 20 ++++++++++++++++++++ lib/irb/extend-command.rb | 5 +++++ test/irb/test_cmd.rb | 17 +++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 lib/irb/cmd/whereami.rb diff --git a/lib/irb/cmd/whereami.rb b/lib/irb/cmd/whereami.rb new file mode 100644 index 0000000..b3def11 --- /dev/null +++ b/lib/irb/cmd/whereami.rb @@ -0,0 +1,20 @@ https://github.com/ruby/ruby/blob/trunk/lib/irb/cmd/whereami.rb#L1 +# 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: diff --git a/lib/irb/extend-command.rb b/lib/irb/extend-command.rb index e7b046a..f50068d 100644 --- a/lib/irb/extend-command.rb +++ b/lib/irb/extend-command.rb @@ -135,6 +135,11 @@ module IRB # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/irb/extend-command.rb#L135 [:measure, NO_OVERRIDE], ], + [ + :irb_whereami, :Whereami, "irb/cmd/whereami", + [:whereami, NO_OVERRIDE], + ], + ] # Installs the default irb commands: diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb index 4a512ed..778b3f8 100644 --- a/test/irb/test_cmd.rb +++ b/test/irb/test_cmd.rb @@ -391,5 +391,22 @@ module TestIRB https://github.com/ruby/ruby/blob/trunk/test/irb/test_cmd.rb#L391 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 -- cgit v1.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/