#!/usr/bin/perl -w

use strict;

# filter gitolite's mkd files through this; it's designed to be idempotent of
# course

sub make_anchor {
    # make an anchor out of a section heading
    my $sh = shift;
    $sh =~ s/\W+/_/g;
    $sh =~ s/^_//;
    return $sh;
}

undef $/;
my $doc = <>;

$doc =~ s/^<a name=".*"><\/a>\n\n//mg;

my @toc = $doc =~ /^###+ .*/mg;
$doc =~ s/^(###+) (.*)/"<a name=\"" . &make_anchor($2) . "\"><\/a>\n\n$1 $2"/mge;

for (@toc) {
    s/^(###+) (.*)/'    ' x (length($1)-3) . '  * <a href="#' . &make_anchor($2) . "\">$2<\/a>"/e;
}

my $toc  = "In this document:\n\n";
$toc .= join("\n", @toc);
$toc .= "\n\n";

$doc =~ s/^In this document:\n\n.*?\n\n/$toc/sm;

print $doc;