Я использую драгоценный камень ruby-graphviz, и я пытаюсь рисовать двоичные деревья. Я хотел бы использовать record shape, так что каждый узел может иметь левое, среднее и правое поле и, таким образом, если есть два ребра, выходящие из узла, можно выделить левый и правый края.Ruby GraphViz Запись двоичного дерева
Я попытался указать поле, объединив имя поля следующим образом: @node1.name + ":left"
Но это не сработало. Каков правильный способ задания поля?
require 'rubygems'
require 'graphviz'
@graph = GraphViz.new(:G, :type => :digraph)
@node1 = @graph.add_node("1",
"shape" => "record",
"label" => "<left>|<f1> 1|<right>")
@node2 = @graph.add_node("2",
"shape" => "record",
"label" => "<left>|<f1> 2|<right>")
@graph.add_edge(@node1.name + ":left", @node2)
# generate a random filename
filename = "/tmp/#{(0...8).map{65.+(rand(25)).chr}.join}.png"
@graph.output(:png => filename)
exec "open #{filename}"
Oups! Я ошибаюсь ... Идентификатор может начинаться с цифры, если идентификатор является ТОЛЬКО числом (сопоставление [-]? (. [0-9] + | [0-9] + (. [0-9] *)?)) Я только что сделал исправление в lib! Это ошибка! – greg