class Announcer::Event
Attributes
name[R]
params[R]
Public Class Methods
load_from_serialized(name, instance, params)
click to toggle source
# File lib/announcer/event.rb, line 19 def self.load_from_serialized(name, instance, params) new(name, params.merge(instance: instance)) end
new(name, params={})
click to toggle source
# File lib/announcer/event.rb, line 13 def initialize(name, params={}) raise ArgumentError, 'missing event name' unless name.respond_to?(:to_sym) @name = name.to_sym _evaluate_params(params) end
Public Instance Methods
[](key)
click to toggle source
# File lib/announcer/event.rb, line 23 def [](key) params[key] end
publish()
click to toggle source
# File lib/announcer/event.rb, line 27 def publish plugins.perform(:publish, self) { |event| instance.publishers.each { |p| p.publish(event) } } end
subscriptions()
click to toggle source
# File lib/announcer/event.rb, line 33 def subscriptions instance.subscriptions_to(self) end
to_s()
click to toggle source
# File lib/announcer/event.rb, line 37 def to_s "Event(#{name}" << (params && !params.empty? && ", #{params.inspect}" or '') << ")" end
Private Instance Methods
_evaluate_params(params)
click to toggle source
Root evaluation method.
# File lib/announcer/event.rb, line 54 def _evaluate_params(params) unless params.is_a?(Hash) raise ArgumentError, 'event parameters must be a hash' end params = params.dup @instance = params.delete(:instance) @params = _sanitize_params(params) end
_sanitize_array(key, array)
click to toggle source
Sanitize an array.
# File lib/announcer/event.rb, line 73 def _sanitize_array(key, array) array.map { |value| _sanitize_value(key, value) }.freeze end
_sanitize_params(params)
click to toggle source
Sanitize the event params. Prevents passing values that could cause errors later in Announcer
.
# File lib/announcer/event.rb, line 68 def _sanitize_params(params) Hash[params.map { |key, value| [key.to_sym, _sanitize_value(key, value)] }].freeze end
_sanitize_value(key, value)
click to toggle source
Sanitize an individual value.
# File lib/announcer/event.rb, line 78 def _sanitize_value(key, value) case value when String value.dup.freeze when Symbol, Integer, Float, NilClass, TrueClass, FalseClass value when Array _sanitize_array(key, value) when Hash _sanitize_params(value) else raise Errors::UnsafeValueError.new(key, value) end end