Всё украдено до нас

Dec 17, 2009 14:09

Вчера сгоряча чуть было не написал программулину по рисованию дерева со структурой XML-файла. Даже, взяв напильник, слегка обточил какой-то старый скрипт разбора XML так, что он стал выдавать вместо текста вида
root
: + first
: : + one
: + second
+ three
исходный текст для GraphViz, из которого уже можно получать картинки.

Сегодня, погуглив на свежую голову, нашёл, что на CPAN, конечно же, есть нужный модуль. Теперь нарисовать дерево можно совсем просто:#!/usr/bin/perl -w

use GraphViz::XML;
use File::Slurp;

my $data = read_file shift @ARGV;
my $graph = GraphViz::XML->new($data);
print $graph->as_png;
Получается такая картинка:


Если нужен другой формат готовой картинки, то помимо PNG, модулем поддерживаются и другие форматы, как растровые (GIF, JPEG), так и векторные (PostScript, SVG) - для этого предназначены методы с вполне предсказуемыми именами as_gif, as_jpeg, as_ps, as_svg и т. п. А если не устраивает внешний вид графа, можно получить исходный dot-файл - для этого существуют методы as_canon и as_text: второй, в отличие от первого, выдаёт ещё и координаты вершин.

Можно ещё попробовать указать нужные свойства графа прямо в скрипте. Но это уже совсем другая история.

graphviz, perl, граф, xml, программизм, png, svg, cpan, дерево

Previous post Next post
Up