class SimpleStates::States
Public Instance Methods
define_event(name, opts)
click to toggle source
Calls superclass method
# File lib/simple_states/states.rb, line 16 def define_event(name, opts) events[name] = Event.new(name, { to: to_past(name).to_sym }.merge(opts)) send(:define_method, name) do |data = {}, opts = {}| self.class::States.events[name].call(self, data, opts) do if method(name).respond_to?(:super_method) supa = method(name).super_method supa.call(*[name, data].slice(0, supa.arity.abs)) if supa elsif defined?(super) super(name, data) end end end send(:define_method, :"#{name}!") do |data = {}| send(name, data, save: true) end end
events()
click to toggle source
# File lib/simple_states/states.rb, line 8 def events @events ||= {} end
states()
click to toggle source
# File lib/simple_states/states.rb, line 12 def states events.values.map { |event| event.opts[:to] }.flatten.compact end
update_events(_, opts)
click to toggle source
# File lib/simple_states/states.rb, line 35 def update_events(_, opts) events.values.each do |event| opts.each do |key, value| event.opts[key] = Array(event.opts[key]).concat(Array(value)) end end end