mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Initial revision
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c2fa753f7d
commit
d9350f5600
9 changed files with 1890 additions and 0 deletions
154
lib/shell/builtin-command.rb
Normal file
154
lib/shell/builtin-command.rb
Normal file
|
@ -0,0 +1,154 @@
|
|||
#
|
||||
# shell/builtin-command.rb -
|
||||
# $Release Version: 0.6.0 $
|
||||
# $Revision$
|
||||
# $Date$
|
||||
# by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
|
||||
#
|
||||
# --
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
require "shell/filter"
|
||||
|
||||
class Shell
|
||||
class BuiltInCommand<Filter
|
||||
def wait?
|
||||
false
|
||||
end
|
||||
def active?
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
class Echo < BuiltInCommand
|
||||
def initialize(sh, *strings)
|
||||
super sh
|
||||
@strings = strings
|
||||
end
|
||||
|
||||
def each(rs = nil)
|
||||
rs = @shell.record_separator unless rs
|
||||
for str in @strings
|
||||
yield str + rs
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Cat < BuiltInCommand
|
||||
def initialize(sh, *filenames)
|
||||
super sh
|
||||
@cat_files = filenames
|
||||
end
|
||||
|
||||
def each(rs = nil)
|
||||
if @cat_files.empty?
|
||||
super
|
||||
else
|
||||
for src in @cat_files
|
||||
@shell.foreach(src, rs){|l| yield l}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Glob < BuiltInCommand
|
||||
def initialize(sh, pattern)
|
||||
super sh
|
||||
|
||||
@pattern = pattern
|
||||
Thread.critical = true
|
||||
back = Dir.pwd
|
||||
begin
|
||||
Dir.chdir @shell.cwd
|
||||
@files = Dir[pattern]
|
||||
ensure
|
||||
Dir.chdir back
|
||||
Thread.critical = false
|
||||
end
|
||||
end
|
||||
|
||||
def each(rs = nil)
|
||||
rs = @shell.record_separator unless rs
|
||||
for f in @files
|
||||
yield f+rs
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# class Sort < Cat
|
||||
# def initialize(sh, *filenames)
|
||||
# super
|
||||
# end
|
||||
#
|
||||
# def each(rs = nil)
|
||||
# ary = []
|
||||
# super{|l| ary.push l}
|
||||
# for l in ary.sort!
|
||||
# yield l
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
class AppendIO < BuiltInCommand
|
||||
def initialize(sh, io, filter)
|
||||
super sh
|
||||
@input = filter
|
||||
@io = io
|
||||
end
|
||||
|
||||
def input=(filter)
|
||||
@input.input=filter
|
||||
for l in @input
|
||||
@io << l
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class AppendFile < AppendIO
|
||||
def initialize(sh, to_filename, filter)
|
||||
@file_name = to_filename
|
||||
io = sh.open(to_filename, "a")
|
||||
super(sh, io, filter)
|
||||
end
|
||||
|
||||
def input=(filter)
|
||||
begin
|
||||
super
|
||||
ensure
|
||||
@io.close
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Tee < BuiltInCommand
|
||||
def initialize(sh, filename)
|
||||
super sh
|
||||
@to_filename = filename
|
||||
end
|
||||
|
||||
def each(rs = nil)
|
||||
to = @shell.open(@to_filename, "w")
|
||||
begin
|
||||
super{|l| to << l; yield l}
|
||||
ensure
|
||||
to.close
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Concat < BuiltInCommand
|
||||
def initialize(sh, *jobs)
|
||||
super(sh)
|
||||
@jobs = jobs
|
||||
end
|
||||
|
||||
def each(rs = nil)
|
||||
while job = @jobs.shift
|
||||
job.each{|l| yield l}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue