Sha256: f46a4c5f27d23d2dc9e2b7dea8b97f1c6b3400958f7500ef805834f28e51ad4a
Contents?: true
Size: 1.45 KB
Versions: 2
Compression:
Stored size: 1.45 KB
Contents
#-- # Copyright (C)2007-10 Tony Arcieri # You can redistribute this under the terms of the Ruby license # See file LICENSE for details #++ module Coolio module Meta # Use an alternate watcher with the attach/detach/enable/disable methods # if it is presently assigned. This is useful if you are waiting for # an event to occur before the current watcher can be used in earnest, # such as making an outgoing TCP connection. def watcher_delegate(proxy_var) %w{attach detach enable disable}.each do |method| module_eval <<-EOD def #{method}(*args) if #{proxy_var} #{proxy_var}.#{method}(*args) return self end super end EOD end end # Define callbacks whose behavior can be changed on-the-fly per instance. # This is done by giving a block to the callback method, which is captured # as a proc and stored for later. If the method is called without a block, # the stored block is executed if present, otherwise it's a noop. def event_callback(*methods) methods.each do |method| module_eval <<-EOD def #{method}(*args, &block) if block @#{method}_callback = block return end if @#{method}_callback instance_exec(*args, &@#{method}_callback) end end EOD end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cool.io-1.0.0 | lib/cool.io/meta.rb |
cool.io-0.9.0 | lib/cool.io/meta.rb |