Module: Skr::Concerns::PubSub::ClassMethods

Defined in:
lib/skr/concerns/pub_sub.rb

Instance Method Summary collapse

Instance Method Details

#_add_event_listener(name, proc) ⇒ Object



56
57
58
# File 'lib/skr/concerns/pub_sub.rb', line 56

def _add_event_listener( name, proc )
    self.event_listeners[name].push( proc ) unless self.event_listeners[name].include?(proc)
end

#_ensure_validate_event(event) ⇒ Object



65
66
67
68
69
# File 'lib/skr/concerns/pub_sub.rb', line 65

def _ensure_validate_event(event)
    unless self.valid_event_names.include?(event.to_sym)
        raise InvalidEvent.new("#{event} is not a valid event for #{self}")
    end
end

#event_listenersObject



52
53
54
# File 'lib/skr/concerns/pub_sub.rb', line 52

def event_listeners
 self._event_listeners ||= Hash.new{ |hash, key| hash[key]=Array.new }
end

#inherited(base) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/skr/concerns/pub_sub.rb', line 43

def inherited(base)
    super
    klass = base.to_s.demodulize
    if PendingEventListeners.all.has_key?( klass )
        events = PendingEventListeners.all.delete(klass)
        events.each{ | name, procs | base.event_listeners[name] += procs  }
    end
end

#observe(event, &block) ⇒ Object



60
61
62
63
# File 'lib/skr/concerns/pub_sub.rb', line 60

def observe( event, &block )
    _ensure_validate_event( event )
    _add_event_listener( event.to_sym, block )
end