class Mutator::Machine
Attributes
stateholder[R]
Public Class Methods
new(stateholder)
click to toggle source
# File lib/mutator/machine.rb, line 5 def initialize stateholder @stateholder = stateholder end
states()
click to toggle source
# File lib/mutator/machine.rb, line 30 def self.states transitions.map do |transition| to, from = transition[:to], transition[:from] [to, from] end.flatten.uniq end
Public Instance Methods
current_state()
click to toggle source
# File lib/mutator/machine.rb, line 13 def current_state stateholder.state end
states()
click to toggle source
# File lib/mutator/machine.rb, line 37 def states self.class.states end
transition(options)
click to toggle source
# File lib/mutator/machine.rb, line 17 def transition options options = extract options transition, success, failure = options.values if transition.call success.call transition true else failure.call transition false end end
transitions()
click to toggle source
# File lib/mutator/machine.rb, line 41 def transitions self.class.transitions end
valid?()
click to toggle source
# File lib/mutator/machine.rb, line 9 def valid? self.class.states.include? current_state end
Protected Instance Methods
extract(options)
click to toggle source
# File lib/mutator/machine.rb, line 47 def extract options to = options.fetch(:to) { transition: Transition.new(to: to, from: current_state, machine: self), success: lambda { |_| }, failure: lambda { |_| } }.merge options end