Class SynFlowFactory::TransitionSet
In: lib/syn_flow.rb
Parent: Object

Methods

<<   add   add_transition   delta   include?   new  

Public Class methods

[Source]

# File lib/syn_flow.rb, line 66
    def initialize
      @val = {}
    end

Public Instance methods

[Source]

# File lib/syn_flow.rb, line 105
    def << ( transition )
      case transition
      when Array
        add(*transition)
      when Hash
        transition.each do |src, x|
          unless x.is_a? Hash
            raise TypeError, "bad transtion: #{transition.inspect}"
          end
          x.each do |label, dest|
            add(src, label, dest)
          end
        end
      when Transition
        add_transition(transition)
      else
        raise TypeError, "bad transtion: #{transition.inspect}"
      end
      self
    end

[Source]

# File lib/syn_flow.rb, line 91
    def add ( src, label, dest )
      @val[src] ||= {}
      @val[src][label] = dest
    end

[Source]

# File lib/syn_flow.rb, line 96
    def add_transition ( t )
      add(t.src, t.label, t.dest)
    end

[Source]

# File lib/syn_flow.rb, line 100
    def delta ( src, label )
      @val[src] ||= {}
      @val[src][label]
    end

[Source]

# File lib/syn_flow.rb, line 70
    def include? ( *a )
      case a.size
      when 1
        t = a[0]
        case t
        when Array
          return include?(*t)
        else
          return delta(t.src, t.label) == t.dest
        end
      when 2
        state, label = a
        return ! delta(state, label).nil?
      when 3
        state, label, dest = a
        return delta(state, label) == dest
      else
        raise ArgumentError, 'bad transition'
      end
    end

[Validate]