Module: Homie

Defined in:
lib/homie.rb,
lib/homie/version.rb

Defined Under Namespace

Classes: EventNotSpecifiedError, ObserverNotPassedError

Constant Summary collapse

VERSION =
'0.1.1'

Instance Method Summary collapse

Instance Method Details

#broadcast(event, *args) ⇒ Object



28
29
30
31
32
# File 'lib/homie.rb', line 28

def broadcast(event, *args)
  observers[event].each { |observer| observer.call(*args) }

  self
end

#failed(*args) ⇒ Object



38
39
40
# File 'lib/homie.rb', line 38

def failed(*args)
  broadcast(:failed, *args)
end

#on(event, *objects, &block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/homie.rb', line 16

def on(event, *objects, &block)
  raise(Homie::EventNotSpecifiedError) unless event && !event.empty?

  raise(Homie::ObserverNotPassedError) unless objects.all? { |object|  object.respond_to?(:call) }

  raise(Homie::ObserverNotPassedError) if (_observers = [*objects, block].compact).size == 0

  observers[event] += _observers

  self
end

#succeeded(*args) ⇒ Object



34
35
36
# File 'lib/homie.rb', line 34

def succeeded(*args)
  broadcast(:succeeded, *args)
end