sardaukar/strict_machine

View on GitHub
lib/strict_machine/base.rb

Summary

Maintainability
A
0 mins
Test Coverage
require_relative "definition_context"

module StrictMachine
  class Base
    include MountStateMachine::InstanceMethods

    def self.strict_machine(state_attr = "state", &block)
      dc = DefinitionContext.new
      dc.instance_eval(&block)

      stored = self

      metaclass.instance_eval do
        define_method(:definition) { dc }
        define_method(:strict_machine_class) { stored }
        define_method(:strict_machine_attr) { state_attr }
      end
    end
  end
end