Class: Ray::DSL::EventRunner
- Inherits:
-
Object
- Object
- Ray::DSL::EventRunner
- Defined in:
- lib/ray/dsl/event_runner.rb
Overview
This class is the one that dispatches events in your program, the one that makes everything work. You may want to create one by yourself if you don’t want to use the other classes that use it. You just have to call run every time you need the events to be processed.
Instance Method Summary collapse
- #add_event(type, args) ⇒ Object
- #add_handler(type, group, args, block) ⇒ Object
-
#clear ⇒ Object
Removes all the registered handlers.
-
#disable_group(group) ⇒ Object
Disables an event group.
-
#enable_group(group) ⇒ Object
Enables an event group.
-
#group_enabled?(group) ⇒ Boolean
Whether an event group is enabled.
-
#initialize ⇒ EventRunner
constructor
A new instance of EventRunner.
-
#remove_group(name) ⇒ Object
Removes all the handlers belonging to a given group.
-
#run ⇒ Object
Sends all the known events to our listeners.
Constructor Details
#initialize ⇒ EventRunner
Returns a new instance of EventRunner.
8 9 10 11 12 13 14 15 |
# File 'lib/ray/dsl/event_runner.rb', line 8 def initialize @handlers = [] @event_list = [] @next_events = [] @event_groups = Hash.new { |h, k| h[k] = true } @event_groups[:default] = true end |
Instance Method Details
#add_event(type, args) ⇒ Object
33 34 35 |
# File 'lib/ray/dsl/event_runner.rb', line 33 def add_event(type, args) @next_events << Ray::DSL::Event.new(type, args) end |
#add_handler(type, group, args, block) ⇒ Object
29 30 31 |
# File 'lib/ray/dsl/event_runner.rb', line 29 def add_handler(type, group, args, block) @handlers << Ray::DSL::Handler.new(type, group, args, block) end |
#clear ⇒ Object
Removes all the registered handlers
53 54 55 |
# File 'lib/ray/dsl/event_runner.rb', line 53 def clear @handlers.clear end |
#disable_group(group) ⇒ Object
Disables an event group
38 39 40 |
# File 'lib/ray/dsl/event_runner.rb', line 38 def disable_group(group) @event_groups[group] = false end |
#enable_group(group) ⇒ Object
Enables an event group
43 44 45 |
# File 'lib/ray/dsl/event_runner.rb', line 43 def enable_group(group) @event_groups[group] = true end |
#group_enabled?(group) ⇒ Boolean
Returns Whether an event group is enabled.
58 59 60 |
# File 'lib/ray/dsl/event_runner.rb', line 58 def group_enabled?(group) @event_groups[group] end |
#remove_group(name) ⇒ Object
Removes all the handlers belonging to a given group
48 49 50 |
# File 'lib/ray/dsl/event_runner.rb', line 48 def remove_group(name) @handlers.delete_if { |o| o.group == name } end |
#run ⇒ Object
Sends all the known events to our listeners.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ray/dsl/event_runner.rb', line 18 def run @event_list = @next_events @next_events = [] handlers = @handlers.select { |o| group_enabled?(o.group) } @event_list.each do |ev| handlers.select { |o| o.call(ev) if o.match?(ev) } end end |