Module: Wisper::Listener
- Defined in:
- lib/wisper/listener.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- UnhandledEventError =
Class.new(StandardError)
Class Method Summary collapse
-
.generated_method_name(event_class) ⇒ Object
NOTE: mostly copied from ActiveSupport#underscore.
- .included(base) ⇒ Object
Instance Method Summary collapse
Class Method Details
.generated_method_name(event_class) ⇒ Object
NOTE: mostly copied from ActiveSupport#underscore
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/wisper/listener.rb', line 8 def self.generated_method_name(event_class) class_name = event_class.gsub('::', '_') name = class_name .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .downcase "on_#{name}" end |
.included(base) ⇒ Object
19 20 21 |
# File 'lib/wisper/listener.rb', line 19 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#_wisper_listener? ⇒ Boolean
23 24 25 |
# File 'lib/wisper/listener.rb', line 23 def _wisper_listener? true end |
#trigger(event) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/wisper/listener.rb', line 27 def trigger(event) method_name = Wisper::Listener.generated_method_name(event.class.name) if respond_to?(method_name) public_send(method_name, event) else raise( UnhandledEventError, "Event #{event.class} not handled in #{self.class}" ) end end |