Sha256: 0143a6c98f0a756f0223f1fc784f203d764ecd42099dee0116d56e9c3d6157a4
Contents?: true
Size: 680 Bytes
Versions: 1
Compression:
Stored size: 680 Bytes
Contents
module Vedeu class Events def initialize(&block) @handlers = Hash.new { |h, k| h[k] = [] } self.instance_eval(&block) if block_given? self end def add(object, &block) @self_before_instance_eval = eval 'self', block.binding self.instance_eval(&block) end def on(event, &block) handlers[event] << block end def trigger(event, *args) handlers[event].each do |handler| handler.call(*args) end end # :nocov: def method_missing(method, *args, &block) @self_before_instance_eval.send method, *args, &block end # :nocov: private attr_reader :handlers end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.1.1 | lib/vedeu/support/events.rb |