Sha256: dc2f419514f5f21ffadba93e1d76b432379a77176f8d49df4090849742018244

Contents?: true

Size: 616 Bytes

Versions: 1

Compression:

Stored size: 616 Bytes

Contents

module FSM
  class MachineConfig
    CONFIG_METHODS = %w[state transition initial attribute]
    instance_methods.each do |m| 
      undef_method m unless  m == '__send__' || m == '__id__' || m == 'instance_eval'
    end
    
    def initialize(target)
      @target = target
    end
    
    def process(&block)
      instance_eval(&block)
    end
    
    def method_missing(sym, *args, &block)
      raise "Unknown config method '#{sym}'. Only #{CONFIG_METHODS.map() {|item| "'#{item}'" }.join(', ')} are known" unless CONFIG_METHODS.include?(sym.to_s)
      @target.__send__(sym, *args, &block)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simplificator-fsm-0.1.0 lib/fsm/machine_config.rb