Module: Gumdrop::Util::Eventable

Includes:
Onfire
Included in:
Site, SiteAccess
Defined in:
lib/gumdrop/util/eventable.rb

Instance Method Summary collapse

Instance Method Details

#clear_eventsObject



31
32
33
# File 'lib/gumdrop/util/eventable.rb', line 31

def clear_events
  @event_table ||= Onfire::EventTable.new
end

#event_block(target) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/gumdrop/util/eventable.rb', line 8

def event_block(target)
  fire "before_#{target}".to_sym
  data= HashObject.new
  result= data.payload= yield(data)
  fire target, data
  fire "after_#{target}".to_sym, data
  ret_val= data.return_value || result
  data.clear()
  ret_val
end

#fire(event, data = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/gumdrop/util/eventable.rb', line 19

def fire(event, data=nil)
  data= case
    when data.nil?
      HashObject.from site:Gumdrop.site
    when data.is_a?(Hash)
      HashObject.from(data).merge site:Gumdrop.site 
    else
      data
    end
  event_for(event, self, data).bubble!
end