module Cura::Event

The container for Event::Base and it's subclasses.

Public Class Methods

all() click to toggle source

Get all Event::Base subclasses.

@return [Array<Class>]

# File lib/cura/event.rb, line 8
def all
  @all ||= []
end
find_by_name(name) click to toggle source

Find an Event::Base subclass by it's name.

@param [#to_sym] name The name of the event. For example, `SomeAction` would be `:some_action`. @return [nil, Class] The Event::Base subclass.

# File lib/cura/event.rb, line 16
def find_by_name(name)
  name = name.to_sym

  all.find { |event_class| event_class.name == name }
end
new_from_name(name, attributes={}) click to toggle source

Initialize an Event::Base subclass by it's name.

@param [#to_sym] name The name of the event class.

# File lib/cura/event.rb, line 25
def new_from_name(name, attributes={})
  # TODO: name should be a string formatted like so 'mouse:button:down' which would correspond to Cura::Event::Mouse::Button::Down
  event_class = find_by_name(name)
  raise ArgumentError, "Unknown event name '#{name}'" if event_class.nil?

  event_class.new(attributes)
end