Object
Any result of command execution is a Filter.
This class includes Enumerable, therefore a Filter object can use all Enumerable facilities.
Outputs filter1, and then filter2 using Join.new
# File shell/filter.rb, line 114
def +(filter)
Join.new(@shell, self, filter)
end
Inputs from source, which is either a string of a file name or an IO object.
# File shell/filter.rb, line 50
def <(src)
case src
when String
cat = Cat.new(@shell, src)
cat | self
when IO
self.input = src
self
else
Shell.Fail Error::CantApplyMethod, "<", src.class
end
end
Outputs from source, which is either a string of a file name or an IO object.
# File shell/filter.rb, line 68
def >(to)
case to
when String
dst = @shell.open(to, "w")
begin
each(){|l| dst << l}
ensure
dst.close
end
when IO
each(){|l| to << l}
else
Shell.Fail Error::CantApplyMethod, ">", to.class
end
self
end
Appends the output to source, which is either a string of a file name or an IO object.
# File shell/filter.rb, line 90
def >>(to)
begin
Shell.cd(@shell.pwd).append(to, self)
rescue CantApplyMethod
Shell.Fail Error::CantApplyMethod, ">>", to.class
end
end
Iterates a block for each line.
# File shell/filter.rb, line 38
def each(rs = nil)
rs = @shell.record_separator unless rs
if @input
@input.each(rs){|l| yield l}
end
end
# File shell/filter.rb, line 30
def input=(filter)
@input = filter
end
# File shell/filter.rb, line 130
def inspect
if @shell.debug.kind_of?(Integer) && @shell.debug > 2
super
else
to_s
end
end
# File shell/filter.rb, line 118
def to_a
ary = []
each(){|l| ary.push l}
ary
end