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|String 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.
32 33 34 35 36 |
# File 'lib/vedeu/events/trigger.rb', line 32 def initialize(name, *args) @name = name @args = args @repository = Vedeu.events end |
Instance Attribute Details
#args ⇒ Array (readonly, protected)
61 62 63 |
# File 'lib/vedeu/events/trigger.rb', line 61 def args @args end |
#name ⇒ Symbol|String (readonly, protected)
57 58 59 |
# File 'lib/vedeu/events/trigger.rb', line 57 def name @name end |
#repository ⇒ Vedeu::Repositories::Repository (readonly, protected)
65 66 67 |
# File 'lib/vedeu/events/trigger.rb', line 65 def repository @repository end |
Class Method Details
.trigger(name, *args) ⇒ Array
Trigger an event by name.
21 22 23 |
# File 'lib/vedeu/events/trigger.rb', line 21 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.
77 78 79 80 81 82 83 84 85 |
# File 'lib/vedeu/events/trigger.rb', line 77 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)
70 71 72 |
# File 'lib/vedeu/events/trigger.rb', line 70 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.
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/vedeu/events/trigger.rb', line 42 def trigger if results.empty? Vedeu.log(type: :event, message: "No action for: '#{name.inspect}'") end return results[0] if results.one? results end |