Sha256: 879a8dd025de79eab4559ff8eec222debe35913c7003f5ae9d4217a1342bb5d8

Contents?: true

Size: 701 Bytes

Versions: 5

Compression:

Stored size: 701 Bytes

Contents

require 'onfire'

module Gumdrop::Util

  module Eventable
    include ::Onfire

    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
      data.return_value || result
    end

    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

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

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
gumdrop-1.1.0 lib/gumdrop/util/eventable.rb
gumdrop-1.0.3 lib/gumdrop/util/eventable.rb
gumdrop-1.0.2 lib/gumdrop/util/eventable.rb
gumdrop-1.0.1 lib/gumdrop/util/eventable.rb
gumdrop-1.0.0 lib/gumdrop/util/eventable.rb