Module: Skr::Concerns::PubSub::ClassMethods
- Defined in:
- lib/skr/concerns/pub_sub.rb
Instance Method Summary collapse
- #_add_event_listener(name, proc) ⇒ Object
- #_ensure_validate_event(event) ⇒ Object
- #event_listeners ⇒ Object
- #inherited(base) ⇒ Object
- #observe(event, &block) ⇒ Object
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_listeners ⇒ Object
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 |