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