Class: Vedeu::Events::Trigger
- Inherits:
-
Object
- Object
- Vedeu::Events::Trigger
- Defined in:
- lib/vedeu/events/trigger.rb
Overview
Trigger a registered or system event by name with arguments. If the event stored returns a value, that is returned. If multiple events are registered for a name, then the result of each event will be returned as part of a collection.
Instance Attribute Summary collapse
- #args ⇒ Array readonly protected
- #name ⇒ Symbol readonly protected
- #repository ⇒ Vedeu::Repositories::Repository readonly protected
Class Method Summary collapse
-
.trigger(name, *args) ⇒ Array
Trigger an event by name.
Instance Method Summary collapse
-
#initialize(name, *args) ⇒ Vedeu::Events::Trigger
constructor
Returns a new instance of Vedeu::Events::Trigger.
-
#registered_events ⇒ Array|Array<Vedeu::Events::Event>
private
Return all of the registered events for this name.
- #results ⇒ Array<void>|void private
-
#trigger ⇒ Array
Trigger the event and return the result or an array of results.
Constructor Details
#initialize(name, *args) ⇒ Vedeu::Events::Trigger
Returns a new instance of Vedeu::Events::Trigger.
30 31 32 33 34 |
# File 'lib/vedeu/events/trigger.rb', line 30 def initialize(name, *args) @name = name @args = args @repository = Vedeu.events end |
Instance Attribute Details
#args ⇒ Array (readonly, protected)
54 55 56 |
# File 'lib/vedeu/events/trigger.rb', line 54 def args @args end |
#name ⇒ Symbol (readonly, protected)
50 51 52 |
# File 'lib/vedeu/events/trigger.rb', line 50 def name @name end |
#repository ⇒ Vedeu::Repositories::Repository (readonly, protected)
58 59 60 |
# File 'lib/vedeu/events/trigger.rb', line 58 def repository @repository end |
Class Method Details
.trigger(name, *args) ⇒ Array
Trigger an event by name.
19 20 21 |
# File 'lib/vedeu/events/trigger.rb', line 19 def self.trigger(name, *args) new(name, *args).trigger end |
Instance Method Details
#registered_events ⇒ Array|Array<Vedeu::Events::Event> (private)
Return all of the registered events for this name.
70 71 72 73 74 75 76 77 78 |
# File 'lib/vedeu/events/trigger.rb', line 70 def registered_events return repository.find(name) if repository.registered?(name) Vedeu::Events::Aliases.find(name).map do |event_name| Vedeu::Events::Trigger.trigger(event_name, *args) end [] end |
#results ⇒ Array<void>|void (private)
63 64 65 |
# File 'lib/vedeu/events/trigger.rb', line 63 def results @results ||= registered_events.map { |event| event.trigger(*args) } end |
#trigger ⇒ Array
Trigger the event and return the result or an array of results.
40 41 42 43 44 |
# File 'lib/vedeu/events/trigger.rb', line 40 def trigger return results[0] if results.one? results end |