Module: Ventable::Event::ClassMethods

Defined in:
lib/ventable/event.rb

Instance Method Summary collapse

Instance Method Details

#configure(&block) ⇒ Object



59
60
61
# File 'lib/ventable/event.rb', line 59

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

#group(name, &block) ⇒ Object



77
78
79
80
81
# File 'lib/ventable/event.rb', line 77

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

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

Raises:



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/ventable/event.rb', line 63

def notifies(*observer_list, **options, &block)
  observer_set = observers
  if options[:inside]
    observer_entry = find_observer_group(options[:inside])
    raise Ventable::Error, "No group with name #{options[:inside]} found." if observer_entry.nil?

    observer_set = observer_entry[:observers]
  end
  raise Ventable::Error, "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