class Okuyama::Protocol::AbstractProtocol

Public Instance Methods

method_missing(method_id, *args, &block) click to toggle source
Calls superclass method
# File lib/okuyama/protocol/abstract_protocol.rb, line 4
def method_missing(method_id, *args, &block)
  method_name = method_id.to_s
  if method_name =~ /^message_of_/ then
    next_method_name = $'
    result = self.capture(:stdout) {
      self.send(next_method_name, $stdout, *args, &block)
    }
    return result
  else
    super
  end
end

Protected Instance Methods

capture(*streams) { || ... } click to toggle source
# File lib/okuyama/protocol/abstract_protocol.rb, line 18
def capture(*streams)
  streams.map! { |stream| stream.to_s }
  begin
    result = StringIO.new
    streams.each { |stream| eval "$#{stream} = result" }
    yield
  ensure
    streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
  end
  result.string
end