Module: Ventable::Event::ClassMethods
- Defined in:
- lib/ventable/event.rb
Instance Method Summary collapse
- #configure(&block) ⇒ Object
-
#default_callback_method ⇒ Object
Determine method name to call when notifying observers from this event.
- #find_observer_group(name) ⇒ Object
- #group(name, &block) ⇒ Object
- #notifies(*observer_list, &block) ⇒ Object
Instance Method Details
#configure(&block) ⇒ Object
56 57 58 |
# File 'lib/ventable/event.rb', line 56 def configure(&block) class_eval(&block) end |
#default_callback_method ⇒ Object
Determine method name to call when notifying observers from this event.
91 92 93 94 95 96 97 98 99 |
# File 'lib/ventable/event.rb', line 91 def default_callback_method if respond_to?(:ventable_callback_method_name) self.ventable_callback_method_name else target = self method = "handle_" + target.name.gsub(/::/,'__').underscore.gsub(/_event/, '') method.to_sym end end |
#find_observer_group(name) ⇒ Object
86 87 88 |
# File 'lib/ventable/event.rb', line 86 def find_observer_group(name) self.observers.find { |o| o.is_a?(Hash) && o[:name] == name } end |
#group(name, &block) ⇒ Object
76 77 78 79 80 81 82 83 84 |
# File 'lib/ventable/event.rb', line 76 def group(name, &block) g = find_observer_group(name) raise "Group #{name} already defined by #{g}" if g self.observers << { name: name, around_block: block, observers: Set.new } end |
#notifies(*observer_list, &block) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/ventable/event.rb', line 60 def notifies(*observer_list, &block) = {} .merge! observer_list.pop if observer_list.last.is_a?(Hash) observer_set = self.observers if [:inside] observer_entry = self.find_observer_group([:inside]) if observer_entry.nil? raise Ventable::Error.new("No group with name #{[:inside]} found.") end observer_set = observer_entry[:observers] end raise Ventable::Error.new("found nil observer in params #{observer_list.inspect}") if observer_list.any?{|l| l.nil?} observer_list.compact.each { |o| observer_set << o } unless observer_list.empty? observer_set << block if block end |