#!/usr/bin/perl -w # Usage: # build/gen_manual >attributes.html use strict; use Carp; use Time::HiRes qw/time/; use File::Spec; BEGIN { $|++; chdir 'doc' if -d 'doc'; use lib 'lib', '../lib'; } my $path = shift || 'manual'; use Graph::Easy 0.62; use Graph::Easy::Parser; use Graph::Easy::Manual; my $start = time(); my $tpl = read_file('attributes.tpl'); # make copy of entries to preserve ARRAY refs my $e = Graph::Easy->_attribute_entries(); my $entries = {}; for my $k (keys %$e) { for my $k1 (keys %{$e->{$k}}) { $entries->{$k}->{$k1} = [ @{$e->{$k}->{$k1}} ]; } } my $parser = Graph::Easy::Parser->new(); my $example_graph_id = ''; for my $class (qw/node edge graph group/) { my $css = ''; my $start_time = time(); my $cur_tpl = read_file('att_' . $class . 's.tpl'); my $txt = ''; my $idx = "
$1<\/code>/g;
# convert L<>
$des =~ s/L<([^>]+)>/$1<\/a>/g;
$des =~ s/(section about )([^>]*?)( for ref)/my $l = $2; $l =~ tr!A-Za-z0-9!_!c; "$1$2<\/a>$3";/eg;
# insert into the index/short overview:
$idx .= "$entry, ";
$txt .= "\n$entry
\n\n";
$txt .= "\n\n";
if (ref($e->[1]) eq 'ARRAY')
{
# list of words
$des .= "\nOne of: " . join (", ", @{$e->[1]}) . ".\n";
}
$txt .= "\n$des
\n";
my $default = $e->[2]; $default = '' unless defined $default;
if (ref($default))
{
my $d = $default; $default = "
\n";
for my $k (sort keys %$d)
{
next if $k eq 'default';
$default .= " $d->{$k} for $k \n";
}
$default .= " $d->{default} for anything else \n" if exists $d->{default};
$default .= "
\n";
}
else
{
$default = '' . $default . '';
}
$txt .= "Defaults to: $default";
if (defined $e->[5])
{
$txt .= "
\nExample graph:\n\n";
my $sample = $e->[5];
# quote hTML chars
$sample =~ s/&/&/g;
$sample =~ s/>/>/g;
$sample =~ s/</g;
$txt .= '' . "$sample\n
\n\n" .
'';
my $graph = $parser->from_text($e->[5]);
confess ($parser->error(). "\n Input:\n" . $e->[5]) if $parser->error();
$graph->id($example_graph_id);
if (($graph->attribute('output') || 'html') eq 'html')
{
$css .= $graph->css();
$txt .= '' . $graph->as_html() . '';
}
else
{
$txt .= '' . $graph->output() . '
';
}
$txt .= '';
$example_graph_id ||= 0; $example_graph_id++;
}
else
{
$txt .= "
\nExample value: $e->[3]\n";
}
$txt .= "\n\n\n";
}
$idx =~ s/- \z//; $idx .= "\n
ColorBrewer schemes:
\n";
for my $scheme (sort keys %$schemes)
{
my $colors = $schemes->{$scheme};
# do w3c and x11 later
next if $scheme =~ /^(w3c|x11)\z/;
$list .= "$scheme color scheme:
\n