source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/shell/builtin-command.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 2.5 KB
Line 
1#
2# shell/builtin-command.rb -
3# $Release Version: 0.6.0 $
4# $Revision: 11708 $
5# $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
6# by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)
7#
8# --
9#
10#
11#
12
13require "shell/filter"
14
15class Shell
16 class BuiltInCommand<Filter
17 def wait?
18 false
19 end
20 def active?
21 true
22 end
23 end
24
25 class Echo < BuiltInCommand
26 def initialize(sh, *strings)
27 super sh
28 @strings = strings
29 end
30
31 def each(rs = nil)
32 rs = @shell.record_separator unless rs
33 for str in @strings
34 yield str + rs
35 end
36 end
37 end
38
39 class Cat < BuiltInCommand
40 def initialize(sh, *filenames)
41 super sh
42 @cat_files = filenames
43 end
44
45 def each(rs = nil)
46 if @cat_files.empty?
47 super
48 else
49 for src in @cat_files
50 @shell.foreach(src, rs){|l| yield l}
51 end
52 end
53 end
54 end
55
56 class Glob < BuiltInCommand
57 def initialize(sh, pattern)
58 super sh
59
60 @pattern = pattern
61 Thread.critical = true
62 back = Dir.pwd
63 begin
64 Dir.chdir @shell.cwd
65 @files = Dir[pattern]
66 ensure
67 Dir.chdir back
68 Thread.critical = false
69 end
70 end
71
72 def each(rs = nil)
73 rs = @shell.record_separator unless rs
74 for f in @files
75 yield f+rs
76 end
77 end
78 end
79
80# class Sort < Cat
81# def initialize(sh, *filenames)
82# super
83# end
84#
85# def each(rs = nil)
86# ary = []
87# super{|l| ary.push l}
88# for l in ary.sort!
89# yield l
90# end
91# end
92# end
93
94 class AppendIO < BuiltInCommand
95 def initialize(sh, io, filter)
96 super sh
97 @input = filter
98 @io = io
99 end
100
101 def input=(filter)
102 @input.input=filter
103 for l in @input
104 @io << l
105 end
106 end
107
108 end
109
110 class AppendFile < AppendIO
111 def initialize(sh, to_filename, filter)
112 @file_name = to_filename
113 io = sh.open(to_filename, "a")
114 super(sh, io, filter)
115 end
116
117 def input=(filter)
118 begin
119 super
120 ensure
121 @io.close
122 end
123 end
124 end
125
126 class Tee < BuiltInCommand
127 def initialize(sh, filename)
128 super sh
129 @to_filename = filename
130 end
131
132 def each(rs = nil)
133 to = @shell.open(@to_filename, "w")
134 begin
135 super{|l| to << l; yield l}
136 ensure
137 to.close
138 end
139 end
140 end
141
142 class Concat < BuiltInCommand
143 def initialize(sh, *jobs)
144 super(sh)
145 @jobs = jobs
146 end
147
148 def each(rs = nil)
149 while job = @jobs.shift
150 job.each{|l| yield l}
151 end
152 end
153 end
154end
Note: See TracBrowser for help on using the repository browser.