module Aggro::EventDSL

Public: Adds a DSL defining event handlers.

Public Instance Methods

handles_event?(event_name, namespace = nil) click to toggle source
# File lib/aggro/event_dsl.rb, line 6
def handles_event?(event_name, namespace = nil)
  self.class.handles_event?(event_name, namespace) || \
    namespace?(namespace) && event_methods[namespace].include?(event_name)
end

Private Instance Methods

event_methods() click to toggle source
# File lib/aggro/event_dsl.rb, line 13
def event_methods
  @event_methods ||= {}
end
events(namespace = nil, &block) click to toggle source
# File lib/aggro/event_dsl.rb, line 22
def events(namespace = nil, &block)
  new_methods = BlockHelper.method_definitions(&block)

  event_methods[namespace] ||= Set.new
  new_methods.each { |method| event_methods[namespace] << method }

  class_eval(&block)

  class_eval do
    new_methods.each do |method|
      alias_method "#{namespace}_#{method}", method
      remove_method method
    end
  end
end
namespace?(namespace) click to toggle source
# File lib/aggro/event_dsl.rb, line 17
def namespace?(namespace)
  !event_methods[namespace].nil?
end