class Prism::EventHandler
Attributes
id[R]
method_name[R]
Public Class Methods
new(instance, method_name, args = [], options = {})
click to toggle source
# File src/prism.rb, line 245 def initialize(instance, method_name, args = [], options = {}) @instance = instance @id = self.object_id @method_name = method_name @args = args @options = {prevent_default: false, stop_propagation: false}.merge(options) end
Public Instance Methods
prevent_default()
click to toggle source
# File src/prism.rb, line 274 def prevent_default EventHandler.new(@instance, method_name, @args, @options.merge(prevent_default: true)) end
process(message)
click to toggle source
# File src/prism.rb, line 282 def process(message) call_args = [] message_args = message["args"] @args.each do |arg| case arg[:type] when :constant call_args << arg[:value] else call_args << message_args.shift end end if @instance.respond_to? message["type"] @instance.send(message["type"], *call_args) else raise "Component #{@instance.class} has no method ##{message["type"]}" end end
stop_propagation()
click to toggle source
# File src/prism.rb, line 278 def stop_propagation EventHandler.new(@instance, method_name, @args, @options.merge(stop_propagation: true)) end
to_hash()
click to toggle source
# File src/prism.rb, line 302 def to_hash { instance: @id, type: @method_name, args: @args, prevent_default: @options[:prevent_default], stop_propagation: @options[:stop_propagation] } end
with(*additionalArgs)
click to toggle source
# File src/prism.rb, line 253 def with(*additionalArgs) new_args = additionalArgs.map { |a| {type: :constant, value: a} } EventHandler.new(@instance, method_name, @args + new_args, @options) end
with_event()
click to toggle source
# File src/prism.rb, line 259 def with_event EventHandler.new(@instance, method_name, @args + [{type: :event}], @options) end
with_event_data(*property_names)
click to toggle source
# File src/prism.rb, line 263 def with_event_data(*property_names) new_args = property_names.map { |item| {type: :event_data, key: item } } EventHandler.new(@instance, method_name, @args + new_args, @options) end
with_target_data(*items)
click to toggle source
# File src/prism.rb, line 269 def with_target_data(*items) target_args = items.map { |item| {type: :target_data, key: item } } EventHandler.new(@instance, method_name, @args + target_args, @options) end