[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]