class State

Attributes

graphviz_node[R]
id[R]
is_final[R]
is_starting[R]

Public Class Methods

new(id) click to toggle source
# File lib/state.rb, line 10
def initialize(id)
  @id = id
  @is_final = false
  @transitions = Array.new
  @graphviz_init = false
  @is_starting = false
end

Public Instance Methods

add_transition(tr) click to toggle source
# File lib/state.rb, line 39
def add_transition(tr)
  @transitions.insert(@transitions.size, tr)
end
associate_transitions(all_transitions) click to toggle source
# File lib/state.rb, line 47
def associate_transitions(all_transitions)
  @transitions.clear
  @id.split(',').each do |id_part|
    all_transitions.each do |transition|
      if id_part == transition.beginning_state.id
        add_transition(transition)
      end
    end
  end
end
clear_transitions() click to toggle source
# File lib/state.rb, line 43
def clear_transitions
  @transitions.clear
end
finalize() click to toggle source
# File lib/state.rb, line 35
def finalize
  @is_final = true
end
get_next(char) click to toggle source
# File lib/state.rb, line 58
def get_next(char)
  ret_val = Array.new
  @transitions.each do |trans|
    trans.alphabet == char ? ret_val.insert(ret_val.size, trans.ending_state) : NIL
  end
  ret_val
end
graph_id() click to toggle source
# File lib/state.rb, line 22
def graph_id
  is_starting ? (@id + "/init") : @id
end
to_graph_node(graphviz_graph) click to toggle source
# File lib/state.rb, line 26
def to_graph_node(graphviz_graph)
  if @is_final
    @graphviz_node = graphviz_graph.add_nodes(graph_id, :shape => "doublecircle")
  else
    @graphviz_node = graphviz_graph.add_nodes(graph_id, :shape => "circle")
  end
  @graphviz_init = false
end
to_starting_node() click to toggle source
# File lib/state.rb, line 18
def to_starting_node
  @is_starting = true
end