mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 21:44:30 +02:00

(https://github.com/ruby/irb/pull/824)
* Command is not a method
* Fix command test
* Implement non-method command name completion
* Add test for ExtendCommandBundle.def_extend_command
* Add helper method install test
* Remove spaces in command input parse
* Remove command arg unquote in help command
* Simplify Statement and handle execution in IRB::Irb
* Tweak require, const name
* Always install CommandBundle module to main object
* Remove considering local variable in command or expression check
* Remove unused method, tweak
* Remove outdated comment for help command arg
Co-authored-by: Stan Lo <stan001212@gmail.com>
---------
8fb776e379
Co-authored-by: Stan Lo <stan001212@gmail.com>
65 lines
1.3 KiB
Ruby
65 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
#
|
|
# change-ws.rb -
|
|
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
|
#
|
|
|
|
require_relative "../ext/workspaces"
|
|
|
|
module IRB
|
|
# :stopdoc:
|
|
|
|
module Command
|
|
class Workspaces < Base
|
|
category "Workspace"
|
|
description "Show workspaces."
|
|
|
|
def execute(_arg)
|
|
inspection_resuls = irb_context.instance_variable_get(:@workspace_stack).map do |ws|
|
|
truncated_inspect(ws.main)
|
|
end
|
|
|
|
puts "[" + inspection_resuls.join(", ") + "]"
|
|
end
|
|
|
|
private
|
|
|
|
def truncated_inspect(obj)
|
|
obj_inspection = obj.inspect
|
|
|
|
if obj_inspection.size > 20
|
|
obj_inspection = obj_inspection[0, 19] + "...>"
|
|
end
|
|
|
|
obj_inspection
|
|
end
|
|
end
|
|
|
|
class PushWorkspace < Workspaces
|
|
category "Workspace"
|
|
description "Push an object to the workspace stack."
|
|
|
|
def execute(arg)
|
|
if arg.empty?
|
|
irb_context.push_workspace
|
|
else
|
|
obj = eval(arg, irb_context.workspace.binding)
|
|
irb_context.push_workspace(obj)
|
|
end
|
|
super
|
|
end
|
|
end
|
|
|
|
class PopWorkspace < Workspaces
|
|
category "Workspace"
|
|
description "Pop a workspace from the workspace stack."
|
|
|
|
def execute(_arg)
|
|
irb_context.pop_workspace
|
|
super
|
|
end
|
|
end
|
|
end
|
|
|
|
# :startdoc:
|
|
end
|