Signed-off-by: Ian Jackson <ijack...@chiark.greenend.org.uk> --- lib/Graph/Writer/GraphViz.pm | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/lib/Graph/Writer/GraphViz.pm b/lib/Graph/Writer/GraphViz.pm index 163f0c0..2767c21 100644 --- a/lib/Graph/Writer/GraphViz.pm +++ b/lib/Graph/Writer/GraphViz.pm @@ -71,6 +71,14 @@ sub graph2graphviz { return $r; } +sub _strip_undefs ($) { + my ($param) = @_; + foreach my $key (keys %$param) { + next if defined $param->{$key}; + delete $param->{$key}; + } +} + sub add_edges { my ($self,$r,$g) = @_; my @e = $g->edges; @@ -87,6 +95,10 @@ sub add_edges { $param{$attr} = $w; } } + if($g->has_edge_attribute($a,$b,'graphviz')) { + %param = (%param, %{ $g->get_edge_attribute($a,$b,'graphviz') }); + _strip_undefs(\%param); + } $r->add_edge($a,$b,%param); } } @@ -102,6 +114,10 @@ sub add_nodes { $param{$attr} = $w; } } + if($g->has_vertex_attribute($_,'graphviz')) { + %param = (%param, %{ $g->get_vertex_attribute($_,'graphviz') }); + _strip_undefs(\%param); + } $r->add_node($_,%param) ; } return $r; @@ -157,9 +173,19 @@ system, like, 'gif' if you have 'as_gif', 'text' if you can do =head1 VERTEX AND EDGE ATTRIBUTES +If a Graph edge or vertex has an attribute named C<graphviz>, it +should be a hashref whose names are Graphviz attribute names, and +whose values are the values to be used. + Certain Graph vertex and edge attributes are automatically transferred -to GraphViz. For vertices these are: style shape label color -fillcolor rank cluster; for edges these are: style label color. +to GraphViz, without them being included in the C<graphviz> attribute. +For vertices these are: style shape label color fillcolor rank +cluster; for edges these are: style label color. Values in the +C<graphviz> attribute override ones straight out of the vertex or edge +attribute namespace. + +Entries in the C<graphviz> vertex attribute with the value undef +suppress those graphiviz attributes. =head1 SEE ALSO -- 1.7.10.4 -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org