Class: MIDIEye::Event

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/midi-eye/event.rb

Overview

User defined callbacks for input events

Instance Method Summary collapse

Constructor Details

#initializeEvent

Returns a new instance of Event.



10
11
12
13
# File 'lib/midi-eye/event.rb', line 10

def initialize
  @event = []
  @queue = Queue.new
end

Instance Method Details

#add(options = {}, &callback) ⇒ Hash

Add a user-defined input callback

Parameters:

  • options (Hash) (defaults to: {})
  • callback (Proc)

Returns:

  • (Hash)


33
34
35
36
37
38
39
40
41
42
43
# File 'lib/midi-eye/event.rb', line 33

def add(options = {}, &callback)
  name = options[:listener_name]
  options.delete(:listener_name)
  event = {
    :conditions => options,
    :proc => callback,
    :listener_name => name
  }
  @event << event
  event
end

#clearBoolean

Clear the collection of events

Returns:

  • (Boolean)


23
24
25
26
27
# File 'lib/midi-eye/event.rb', line 23

def clear
  @event.clear
  @queue.clear
  true
end

#delete(name) ⇒ Object

Delete an event by name

Parameters:

  • name (String, Symbol)


17
18
19
# File 'lib/midi-eye/event.rb', line 17

def delete(name)
  @event.delete_if { |event| event[:listener_name].to_s == name.to_s }
end

#enqueue(action, message) ⇒ Hash

Add an event to the trigger queue

Returns:

  • (Hash)


64
65
66
67
68
69
70
71
# File 'lib/midi-eye/event.rb', line 64

def enqueue(action, message)
  event = {
    :action => action,
    :message => message
  }
  @queue << event
  event
end

#enqueue_all(message) ⇒ Array<Hash>

Enqueue all events with the given message

Returns:

  • (Array<Hash>)


58
59
60
# File 'lib/midi-eye/event.rb', line 58

def enqueue_all(message)
  @event.map { |action| enqueue(action, message) }
end

#trigger_enqueuedFixnum

Trigger all enqueued events

Returns:

  • (Fixnum)

    The number of triggered events



47
48
49
50
51
52
53
54
# File 'lib/midi-eye/event.rb', line 47

def trigger_enqueued
  counter = 0
  while !@queue.empty? do
    counter += 1
    trigger(@queue.shift)
  end
  counter
end