diff options
Diffstat (limited to 'trunk/lib/irb/cmd')
-rw-r--r-- | trunk/lib/irb/cmd/chws.rb | 32 | ||||
-rw-r--r-- | trunk/lib/irb/cmd/fork.rb | 38 | ||||
-rw-r--r-- | trunk/lib/irb/cmd/help.rb | 34 | ||||
-rw-r--r-- | trunk/lib/irb/cmd/load.rb | 66 | ||||
-rw-r--r-- | trunk/lib/irb/cmd/nop.rb | 38 | ||||
-rw-r--r-- | trunk/lib/irb/cmd/pushws.rb | 38 | ||||
-rw-r--r-- | trunk/lib/irb/cmd/subirb.rb | 42 |
7 files changed, 288 insertions, 0 deletions
diff --git a/trunk/lib/irb/cmd/chws.rb b/trunk/lib/irb/cmd/chws.rb new file mode 100644 index 0000000000..c2db7e5d91 --- /dev/null +++ b/trunk/lib/irb/cmd/chws.rb @@ -0,0 +1,32 @@ +# +# change-ws.rb - +# $Release Version: 0.9.5$ +# $Revision$ +# by Keiju ISHITSUKA(keiju@ruby-lang.org) +# +# -- +# +# +# + +require "irb/cmd/nop.rb" +require "irb/ext/change-ws.rb" + +module IRB + module ExtendCommand + + class CurrentWorkingWorkspace<Nop + def execute(*obj) + irb_context.main + end + end + + class ChangeWorkspace<Nop + def execute(*obj) + irb_context.change_workspace(*obj) + irb_context.main + end + end + end +end + diff --git a/trunk/lib/irb/cmd/fork.rb b/trunk/lib/irb/cmd/fork.rb new file mode 100644 index 0000000000..6f4133c047 --- /dev/null +++ b/trunk/lib/irb/cmd/fork.rb @@ -0,0 +1,38 @@ +# +# fork.rb - +# $Release Version: 0.9.5 $ +# $Revision$ +# by Keiju ISHITSUKA(keiju@ruby-lang.org) +# +# -- +# +# +# + +@RCS_ID='-$Id$-' + + +module IRB + module ExtendCommand + class Fork<Nop + def execute(&block) + pid = send ExtendCommand.irb_original_method_name("fork") + unless pid + class<<self + alias_method :exit, ExtendCommand.irb_original_method_name('exit') + end + if iterator? + begin + yield + ensure + exit + end + end + end + pid + end + end + end +end + + diff --git a/trunk/lib/irb/cmd/help.rb b/trunk/lib/irb/cmd/help.rb new file mode 100644 index 0000000000..e1f47e2c97 --- /dev/null +++ b/trunk/lib/irb/cmd/help.rb @@ -0,0 +1,34 @@ +# +# help.rb - helper using ri +# $Release Version: 0.9.5$ +# $Revision$ +# +# -- +# +# +# + +require 'rdoc/ri/driver' +require 'rdoc/ri/util' + +module IRB + module ExtendCommand + module Help + begin + @ri = RDoc::RI::Driver.new + rescue SystemExit + else + def self.execute(context, *names) + names.each do |name| + begin + @ri.get_info_for(name.to_s) + rescue RDoc::RI::Error + puts $!.message + end + end + nil + end + end + end + end +end diff --git a/trunk/lib/irb/cmd/load.rb b/trunk/lib/irb/cmd/load.rb new file mode 100644 index 0000000000..cda9a053fe --- /dev/null +++ b/trunk/lib/irb/cmd/load.rb @@ -0,0 +1,66 @@ +# +# load.rb - +# $Release Version: 0.9.5$ +# $Revision$ +# by Keiju ISHITSUKA(keiju@ruby-lang.org) +# +# -- +# +# +# + +require "irb/cmd/nop.rb" +require "irb/ext/loader" + +module IRB + module ExtendCommand + class Load<Nop + include IrbLoader + + def execute(file_name, priv = nil) +# return ruby_load(file_name) unless IRB.conf[:USE_LOADER] + return irb_load(file_name, priv) + end + end + + class Require<Nop + include IrbLoader + + def execute(file_name) +# return ruby_require(file_name) unless IRB.conf[:USE_LOADER] + + rex = Regexp.new("#{Regexp.quote(file_name)}(\.o|\.rb)?") + return false if $".find{|f| f =~ rex} + + case file_name + when /\.rb$/ + begin + if irb_load(file_name) + $".push file_name + return true + end + rescue LoadError + end + when /\.(so|o|sl)$/ + return ruby_require(file_name) + end + + begin + irb_load(f = file_name + ".rb") + $".push f + return true + rescue LoadError + return ruby_require(file_name) + end + end + end + + class Source<Nop + include IrbLoader + def execute(file_name) + source_file(file_name) + end + end + end + +end diff --git a/trunk/lib/irb/cmd/nop.rb b/trunk/lib/irb/cmd/nop.rb new file mode 100644 index 0000000000..0b68098d4f --- /dev/null +++ b/trunk/lib/irb/cmd/nop.rb @@ -0,0 +1,38 @@ +# +# nop.rb - +# $Release Version: 0.9.5$ +# $Revision$ +# by Keiju ISHITSUKA(keiju@ruby-lang.org) +# +# -- +# +# +# +module IRB + module ExtendCommand + class Nop + + @RCS_ID='-$Id$-' + + def self.execute(conf, *opts) + command = new(conf) + command.execute(*opts) + end + + def initialize(conf) + @irb_context = conf + end + + attr_reader :irb_context + + def irb + @irb_context.irb + end + + def execute(*opts) + #nop + end + end + end +end + diff --git a/trunk/lib/irb/cmd/pushws.rb b/trunk/lib/irb/cmd/pushws.rb new file mode 100644 index 0000000000..b5b41501af --- /dev/null +++ b/trunk/lib/irb/cmd/pushws.rb @@ -0,0 +1,38 @@ +# +# change-ws.rb - +# $Release Version: 0.9.5$ +# $Revision$ +# by Keiju ISHITSUKA(keiju@ruby-lang.org) +# +# -- +# +# +# + +require "irb/cmd/nop.rb" +require "irb/ext/workspaces.rb" + +module IRB + module ExtendCommand + class Workspaces<Nop + def execute(*obj) + irb_context.workspaces.collect{|ws| ws.main} + end + end + + class PushWorkspace<Workspaces + def execute(*obj) + irb_context.push_workspace(*obj) + super + end + end + + class PopWorkspace<Workspaces + def execute(*obj) + irb_context.pop_workspace(*obj) + super + end + end + end +end + diff --git a/trunk/lib/irb/cmd/subirb.rb b/trunk/lib/irb/cmd/subirb.rb new file mode 100644 index 0000000000..5eccf9f2c1 --- /dev/null +++ b/trunk/lib/irb/cmd/subirb.rb @@ -0,0 +1,42 @@ +#!/usr/local/bin/ruby +# +# multi.rb - +# $Release Version: 0.9.5$ +# $Revision$ +# by Keiju ISHITSUKA(keiju@ruby-lang.org) +# +# -- +# +# +# + +require "irb/cmd/nop.rb" +require "irb/ext/multi-irb" + +module IRB + module ExtendCommand + class IrbCommand<Nop + def execute(*obj) + IRB.irb(nil, *obj) + end + end + + class Jobs<Nop + def execute + IRB.JobManager + end + end + + class Foreground<Nop + def execute(key) + IRB.JobManager.switch(key) + end + end + + class Kill<Nop + def execute(*keys) + IRB.JobManager.kill(*keys) + end + end + end +end |