module Coque::Redirectable

Attributes

stderr[R]
stdin[R]
stdout[R]

Public Instance Methods

<(io) click to toggle source
# File lib/coque/redirectable.rb, line 23
def <(io)
  self.in(io)
end
>(io) click to toggle source
# File lib/coque/redirectable.rb, line 13
def >(io)
  out(io)
end
>=(io) click to toggle source
# File lib/coque/redirectable.rb, line 33
def >=(io)
  err(io)
end
err(io) click to toggle source
# File lib/coque/redirectable.rb, line 27
def err(io)
  clone.tap do |c|
    c.stderr = io
  end
end
getio(io, mode = "r") click to toggle source
# File lib/coque/redirectable.rb, line 37
def getio(io, mode = "r")
  case io
  when STDERR
    io.dup
  when STDOUT
    io.dup
  when String
    File.open(io, mode)
  when Pathname
    File.open(io, mode)
  when IO
    io
  when Tempfile
    io
  else
    raise ArgumentError.new("Can't redirect stream to #{io}, must be String, Pathname, or IO")
  end
end
in(io) click to toggle source
# File lib/coque/redirectable.rb, line 17
def in(io)
  clone.tap do |c|
    c.stdin = io
  end
end
out(io) click to toggle source
# File lib/coque/redirectable.rb, line 7
def out(io)
  clone.tap do |c|
    c.stdout = io
  end
end
stderr=(s) click to toggle source
# File lib/coque/redirectable.rb, line 56
def stderr=(s)
  @stderr = getio(s, "w")
end
stdin=(s) click to toggle source
# File lib/coque/redirectable.rb, line 64
def stdin=(s)
  @stdin = getio(s, "r")
end
stdout=(s) click to toggle source
# File lib/coque/redirectable.rb, line 60
def stdout=(s)
  @stdout = getio(s, "w")
end

Private Instance Methods

stdout_read() click to toggle source
# File lib/coque/redirectable.rb, line 70
def stdout_read
  if defined? @stdout_read
    @stdout_read
  else
    nil
  end
end