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