Class: Vedeu::Trigger
- Inherits:
-
Object
- Object
- Vedeu::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::Repository readonly protected
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(name, *args) ⇒ Vedeu::Trigger
constructor
Returns a new instance of Vedeu::Trigger.
-
#registered_events ⇒ Array|Array<Vedeu::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 (if one) or an array of results.
Constructor Details
#initialize(name, *args) ⇒ Vedeu::Trigger
Returns a new instance of Vedeu::Trigger.
24 25 26 27 28 |
# File 'lib/vedeu/events/trigger.rb', line 24 def initialize(name, *args) @name = name @args = args @repository = Vedeu.events end |
Instance Attribute Details
#args ⇒ Array (readonly, protected)
51 52 53 |
# File 'lib/vedeu/events/trigger.rb', line 51 def args @args end |
#name ⇒ Symbol (readonly, protected)
47 48 49 |
# File 'lib/vedeu/events/trigger.rb', line 47 def name @name end |
#repository ⇒ Vedeu::Repository (readonly, protected)
55 56 57 |
# File 'lib/vedeu/events/trigger.rb', line 55 def repository @repository end |
Class Method Details
.trigger(name, *args) ⇒ Array
16 17 18 |
# File 'lib/vedeu/events/trigger.rb', line 16 def self.trigger(name, *args) new(name, *args).trigger end |
Instance Method Details
#registered_events ⇒ Array|Array<Vedeu::Event> (private)
Return all of the registered events for this name.
67 68 69 70 71 |
# File 'lib/vedeu/events/trigger.rb', line 67 def registered_events return [] unless repository.registered?(name) repository.find(name) end |
#results ⇒ Array<void>|void (private)
60 61 62 |
# File 'lib/vedeu/events/trigger.rb', line 60 def results @results ||= registered_events.map { |event| event.trigger(*args) } end |
#trigger ⇒ Array
Trigger the event and return the result (if one) or an array of results.
33 34 35 36 37 38 39 40 41 |
# File 'lib/vedeu/events/trigger.rb', line 33 def trigger if results.one? results.first else results end end |