Sha256: 9f1e17f4d275088c83750bd768d46a0e908a3f09fcbc340c6c12696fb28df35e

Contents?: true

Size: 642 Bytes

Versions: 1

Compression:

Stored size: 642 Bytes

Contents

module Multiflow
  class State
    attr_accessor :name, :options
    
    def initialize(name, &options)
      @name = name
      @options = Hash.new
      
      instance_eval(&options) if block_given?
    end
    
    def enter(method = nil, &block)
      @options[:enter] = method.nil? ? block : method
    end
    
    def exit(method = nil, &block)
      @options[:exit] = method.nil? ? block : method
    end
    
    def execute_action(action, base)
      action = @options[action.to_sym]
      
      case action
      when Symbol, String
        base.send(action)
      when Proc
        action.call(base)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
multiflow-1.0.0 lib/multiflow/state.rb