D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
proc
/
self
/
root
/
proc
/
self
/
root
/
opt
/
alt
/
ruby34
/
share
/
ruby
/
irb
/
command
/
Filename :
cd.rb
back
Copy
# frozen_string_literal: true module IRB module Command class CD < Base category "Workspace" description "Move into the given object or leave the current context." help_message(<<~HELP) Usage: cd ([target]|..) IRB uses a stack of workspaces to keep track of context(s), with `pushws` and `popws` commands to manipulate the stack. The `cd` command is an attempt to simplify the operation and will be subject to change. When given: - an object, cd will use that object as the new context by pushing it onto the workspace stack. - "..", cd will leave the current context by popping the top workspace off the stack. - no arguments, cd will move to the top workspace on the stack by popping off all workspaces. Examples: cd Foo cd Foo.new cd @ivar cd .. cd HELP def execute(arg) case arg when ".." irb_context.pop_workspace when "" # TODO: decide what workspace commands should be kept, and underlying APIs should look like, # and perhaps add a new API to clear the workspace stack. prev_workspace = irb_context.pop_workspace while prev_workspace prev_workspace = irb_context.pop_workspace end else begin obj = eval(arg, irb_context.workspace.binding) irb_context.push_workspace(obj) rescue StandardError => e warn "Error: #{e}" end end end end end end