Module: Hatetepe::Events::ClassMethods

Defined in:
lib/hatetepe/events.rb

Instance Method Summary collapse

Instance Method Details

#event(name, *more_names) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/hatetepe/events.rb', line 19

def event(name, *more_names)
  define_method :"on_#{name}" do |&block|
    ivar = :"@on_#{name}"
    store = instance_variable_get(ivar)
    store ||= instance_variable_set(ivar, [])
    
    return store unless block
    store << block
  end
  
  define_method(:"#{name}?") { state == name }
  
  more_names.each &method(:event)
end