Sha256: d07fda49055654902ecde546090b7f00b375e1c7107be3848f671b56a3319d62
Contents?: true
Size: 1.5 KB
Versions: 3
Compression:
Stored size: 1.5 KB
Contents
#-- # Copyright (C)2007 Tony Arcieri # You can redistribute this under the terms of the Ruby license # See file LICENSE for details #++ require File.dirname(__FILE__) + '/../rev' module Rev class Watcher # 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 self.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 self.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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rev-0.1.3 | lib/rev/watcher.rb |
rev-0.1.4 | lib/rev/watcher.rb |
rev-0.1.2 | lib/rev/watcher.rb |