#!/usr/bin/env dag
%t_by_name by_name
Module ---> Readme Changes License Lib* {
my $v = my_version($_n);
$_n =~ s/[\d\.\-]+$//;
my $orig = $_n;
$_n =~ s/[^\w]+/_/g;
$_n = lc $_n;
create_dot($_n, $::tree);
open F, ">$_n.html";
print F my_js()."
$orig
Version: $v
".$_[1].$_[2].$_[3];
print F "
";
close F;
};
Lib {
my ($_,$x) = split /\/*lib\/*/, $_p;
#$x =~ s/\.pm$//;
my @a = split /\/+/, $x;
my $last = pop @a;
$::tree->{$last} = [reverse @a];
};
Readme { $_c=~s/\n/
/g; "".$_c."
" };
Changes { $_c=~s/\n/
/g; "".$_c."
" };
License { $_c=~s/\n/
/g; "".$_c."
" };
%%
use GraphViz;
my $tree = {};
sub by_name {
my $path = shift;
$path =~ m/\w+\-\w+\-[\.\d]+\/*$/i and return 'Module';
$path =~ m/\/+readme$/i and return 'Readme';
$path =~ m/\/+changes$/i and return 'Changes';
$path =~ m/\/+license$/i and return 'License';
$path =~ m/\.pm$/i and return 'Lib';
#$path =~ m/\/+t$/ and return 't';
#$path =~ m/\/+examples$/ and return 'examples';
}
sub my_js {
my $css=<<'EOF';
EOF
}
sub my_version {
my $name = shift;
$name =~ m/([\d]+[\d\.\-]*)/;
my $version = $1;
}
sub create_dot {
my ($n,$tree) = @_;
my $g = GraphViz->new();
my %cnt;
foreach my $i (keys %$tree) {
if ($i =~ m/\.pm$/) {
$g->add_node("$i",'style'=>'dashed');
}
else {
$g->add_node("$i");
}
my $last = $i;
foreach my $j (@{$tree->{$i}}) {
$g->add_edge($j => $last) unless $cnt{"$j $last"};
$cnt{"$j $last"}++;
$last = $j;
}
}
$g->as_png("$n.png");
}