Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/ruby/lib/irb/ext/workspaces.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby/lib/irb/ext/workspaces.rb')
-rw-r--r--ruby/lib/irb/ext/workspaces.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/ruby/lib/irb/ext/workspaces.rb b/ruby/lib/irb/ext/workspaces.rb
new file mode 100644
index 0000000..a68e7d5
--- /dev/null
+++ b/ruby/lib/irb/ext/workspaces.rb
@@ -0,0 +1,55 @@
+#
+# push-ws.rb -
+# $Release Version: 0.9.5$
+# $Revision: 14912 $
+# 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
+