class Pastafari::State

Attributes

handler[RW]
name[RW]
transitions[RW]

Public Class Methods

build(name, &block) click to toggle source
# File lib/pastafari/state.rb, line 3
def self.build(name, &block)
  raise ArgumentError unless block

  builder = Builders::StateBuilder.new(name)
  builder.instance_eval(&block)

  builder.build
end
new(name, handler, transitions) click to toggle source
# File lib/pastafari/state.rb, line 26
def initialize(name, handler, transitions)
  @name = name
  @handler = handler
  @transitions = transitions || []
end

Public Instance Methods

evaluate_transitions(input) click to toggle source
# File lib/pastafari/state.rb, line 18
def evaluate_transitions(input)
  transition = transitions.detect { |t| t.evaluate(input) }

  transition&.next_state
end
process(input) click to toggle source
# File lib/pastafari/state.rb, line 14
def process(input)
  handler.call(input)
end