#!/usr/athena/bin/perl

$rootdir = "/mit/mkgray/project/webio";
$datadir = "$rootdir/data";
$outdir = "$rootdir/output";

open(CFG, "$datadir/.config");

$/ = "\n\n";

while(<CFG>){
	&genPage($_);	
}

&descendTree($start);
$inweb{$start}=1;

foreach $p (@pages){
	$n = int($pointedto{$p});
	if($verbose){
		print("$p is pointed to $n times");
		print(" <---- WARNING") if (!$pointedto{$p} && ($start ne $p));
		print("\n");	
	}
	push(@notinweb, $p) if !$inweb{$p};
}

foreach $np (@notinweb){
	print("NOTINWEB: $np\n");
}

foreach $d (@deadends){
	print("DEADEND: $d\n");
}


sub descendTree {
	local($node) = @_;
	local(@subnodes);
	local($s);
	return if $inweb{$node};

	$inweb{$node}=1;
	(@subnodes) = split("\n", $tree{$node});	
	foreach $s (@subnodes){
		&descendTree($s) unless !$s;
	}
}

sub genPage {
	local($pageinfo) = @_;

	($source, $title, @keys) = split("\n", $pageinfo);
	$start = $source unless $start;
	push(@pages, $source);
	open(OUT, ">$outdir/$source".".html");
	print OUT "<title>$title</title>\n";
	print OUT "<h1>$title</h1>\n";
	$sl = $/;
	undef $/;
	open(SRC, "$datadir/$source");
	$data = (<SRC>);
	close(SRC);
	$/ = $sl;
	$data =~ s/\n\n/\n<p>\n/g;
	print OUT $data;
	print OUT "<hr><ul>\n";
	push(@deadends, $source) if($#keys <0);
	foreach $k (@keys){
		($to, @words) = split(" ", $k);
		$pointedto{$to}++;
		$tree{$source} .= "$to\n";
		print(OUT "<li><a href=\"$to.html\">$to</a>\n");
	}
	print OUT "</ul>\n";
}