summaryrefslogtreecommitdiff
path: root/lib/irb/command/cd.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/irb/command/cd.rb')
-rw-r--r--lib/irb/command/cd.rb51
1 files changed, 0 insertions, 51 deletions
diff --git a/lib/irb/command/cd.rb b/lib/irb/command/cd.rb
deleted file mode 100644
index b83c8689ae..0000000000
--- a/lib/irb/command/cd.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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