summaryrefslogtreecommitdiff
path: root/ruby_1_8_6/lib/irb/ext/workspaces.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_6/lib/irb/ext/workspaces.rb')
-rw-r--r--ruby_1_8_6/lib/irb/ext/workspaces.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/ruby_1_8_6/lib/irb/ext/workspaces.rb b/ruby_1_8_6/lib/irb/ext/workspaces.rb
new file mode 100644
index 0000000000..79098570dc
--- /dev/null
+++ b/ruby_1_8_6/lib/irb/ext/workspaces.rb
@@ -0,0 +1,56 @@
+#
+# push-ws.rb -
+# $Release Version: 0.9.5$
+# $Revision$
+# $Date$
+# by Keiju ISHITSUKA(keiju@ruby-lang.org)
+#
+# --
+#
+#
+#
+
+module IRB
+ class Context
+
+ def irb_level
+ workspace_stack.size
+ end
+
+ def workspaces
+ if defined? @workspaces
+ @workspaces
+ else
+ @workspaces = []
+ end
+ end
+
+ def push_workspace(*_main)
+ if _main.empty?
+ if workspaces.empty?
+ print "No other workspace\n"
+ return nil
+ end
+ ws = workspaces.pop
+ workspaces.push @workspace
+ @workspace = ws
+ return workspaces
+ end
+
+ workspaces.push @workspace
+ @workspace = WorkSpace.new(@workspace.binding, _main[0])
+ if !(class<<main;ancestors;end).include?(ExtendCommandBundle)
+ main.extend ExtendCommandBundle
+ end
+ end
+
+ def pop_workspace
+ if workspaces.empty?
+ print "workspace stack empty\n"
+ return
+ end
+ @workspace = workspaces.pop
+ end
+ end
+end
+