Module: Ventable::Event::ClassMethods

Defined in:
lib/ventable/event.rb

Instance Method Summary collapse

Instance Method Details

#configure(&block) ⇒ Object



56
57
58
# File 'lib/ventable/event.rb', line 56

def configure(&block)
  class_eval(&block)
end

#group(name, &block) ⇒ Object



72
73
74
75
76
77
# File 'lib/ventable/event.rb', line 72

def group(name, &block)
  self.observers << { name:         name,
                      around_block: block,
                      observers:    Set.new }

end

#notifies(*observer_list, **options, &block) ⇒ Object

Raises:



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/ventable/event.rb', line 60

def notifies(*observer_list, **options, &block)
  observer_set = self.observers
  if options[:inside]
    observer_entry = self.find_observer_group(options[:inside])
    raise Ventable::Error.new("No group with name #{options[:inside]} found.") if observer_entry.nil?
    observer_set = observer_entry[:observers]
  end
  raise Ventable::Error.new("found nil observer in params #{observer_list.inspect}") if observer_list.any?(&:nil?)
  observer_list.compact.each { |o| observer_set << o } unless observer_list.empty?
  observer_set << block if block
end