Module: CyberarmEngine::Event
- Included in:
- Element
- Defined in:
- lib/cyberarm_engine/ui/event.rb
Overview
Gets included into Element
Instance Method Summary collapse
- #event(event) ⇒ Object
- #publish(event, *args) ⇒ Object
- #subscribe(event, method = nil, &block) ⇒ Object
- #unsubscribe(subscription) ⇒ Object
Instance Method Details
#event(event) ⇒ Object
35 36 37 38 |
# File 'lib/cyberarm_engine/ui/event.rb', line 35 def event(event) @event_handler ||= {} @event_handler[event] ||= [] end |
#publish(event, *args) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/cyberarm_engine/ui/event.rb', line 13 def publish(event, *args) raise ArgumentError, "#{self.class} does not handle #{event.inspect}" unless @event_handler.include?(event) return unless enabled? was_handled = false was_handled = true if respond_to?(event) && (send(event, self, *args) == :handled) @event_handler[event].reverse_each do |handler| if handler.call(self, *args) == :handled was_handled = true break end end return :handled if was_handled parent.publish(event, *args) if parent nil end |
#subscribe(event, method = nil, &block) ⇒ Object
3 4 5 6 7 8 |
# File 'lib/cyberarm_engine/ui/event.rb', line 3 def subscribe(event, method = nil, &block) handler = method || block @event_handler[event] << handler Subscription.new(self, event, handler) end |
#unsubscribe(subscription) ⇒ Object
10 11 |
# File 'lib/cyberarm_engine/ui/event.rb', line 10 def unsubscribe(subscription) end |