Sha256: d20db8d6c4bbade85df0a7a64996c9f2c74cffdd192e746f51abcbad9d3f2346
Contents?: true
Size: 886 Bytes
Versions: 3
Compression:
Stored size: 886 Bytes
Contents
module Artoo module Events # Subscribe to an event from a device def on(device, events={}) events.each do |k, v| subscribe("#{safe_name}_#{device.name}_#{k}", create_proxy_method(k, v)) end end # Create an anonymous subscription method so we can wrap the # subscription method fire into a valid method regardless # of where it is defined def create_proxy_method(k, v) proxy_method_name(k).tap do |name| self.class.send :define_method, name do |*args| case v when Symbol self.send v.to_sym, *args when Proc v.call(*args) end end end end # A simple loop to create a 'fake' anonymous method def proxy_method_name(k) begin meth = "#{k}_#{Random.rand(999)}" end while respond_to?(meth) meth end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
artoo-0.4.0 | lib/artoo/events.rb |
artoo-0.3.0 | lib/artoo/events.rb |
artoo-0.2.0 | lib/artoo/events.rb |