Sha256: e381988e503ce2fa57012f9a43bdaf310c9e181fd406a79593e628db6d51959a

Contents?: true

Size: 922 Bytes

Versions: 3

Compression:

Stored size: 922 Bytes

Contents

module Controll
  class Events
    include Enumerable
    include Controll::Event::Helper

    attr_reader :events

    def initialize *events
      @events = events.flatten.map{|event| normalize event }
    end

    def each
      events.each {|event| yield event }
    end

    def << event
      events << event
    end

    def last
      events.last
    end

    def self.valid_types
      Controll::Event.valid_types
    end

    # fx error? - returns if any event of type error
    valid_types.each do |type|
      meth = :"#{type}?"
      define_method meth do
        self.any? {|event| event.send(meth) }
      end
    end

    # fx errors - returns all events of type error
    valid_types.each do |type|
      meth = type.to_s.pluralize
      define_method meth do
        self.select {|event| event.send(:"#{type}?") }
      end
    end

    def valid_types
      Controll::Event.valid_types
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
controll-0.3.2 lib/controll/events.rb
controll-0.3.1 lib/controll/events.rb
controll-0.3.0 lib/controll/events.rb