Class: SimpleStates::States
- Inherits:
-
Module
- Object
- Module
- SimpleStates::States
- Includes:
- Helpers
- Defined in:
- lib/simple_states/states.rb
Instance Method Summary collapse
- #define_event(name, opts) ⇒ Object
- #events ⇒ Object
- #states ⇒ Object
- #update_events(_, opts) ⇒ Object
Methods included from Helpers
Instance Method Details
#define_event(name, opts) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# 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 ⇒ Object
8 9 10 |
# File 'lib/simple_states/states.rb', line 8 def events @events ||= {} end |
#states ⇒ Object
12 13 14 |
# File 'lib/simple_states/states.rb', line 12 def states events.values.map { |event| event.opts[:to] }.flatten.compact end |
#update_events(_, opts) ⇒ Object
35 36 37 38 39 40 41 |
# 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 |