#!/usr/local/bin/perl -w
# reads in a bookmark file made by netscape
# 
# and prepends a clicky index
# usage
# bkmk.p bk.html > bk2.html
#
# copyleft (c) David MacKay 1998
# my procedure:
# mv ~/ra/t.html ~/pub/bookmks.html
# bkmk.p bookmks.html > bkmks.html
# cp ~/bin/bkmk.p ~/pub/code/perl
#
$killdates=1 ; # whether to strip out date info to make the file more compressed
@a = <> ;
# $b = join(@a) ;
# get rid of all the lines that are not
# <DL><p>
# </DL>
# <DT><H
print '<BODY BGCOLOR="#FFFFEE" TEXT="#000000" LINK="#0000C8" ALINK="#C80000" 
VLINK="#C80000">' ;
print '<!---file written by bkmk.p>';
print "\n" ;
$level = 0 ;
$maxl = 10 ;
for ( $l = 0 ; $l <= $maxl+1 ; $l ++ ) {
    $new[$l] = "" ;
    $n[$l] = 0 ; 
}
$highestl = 0 ; 
foreach $aa (@a) {
    $_ = $aa ;
    if ( $killdates ) {
	s/FOLDED //g ;
	s/ADD_DATE\=\"[1234567890]+\"//g ; 
	s/LAST_\w+\=\"[1234567890]+\"//g ;
	s/^\s+// ;
    }
    if ( /\<DL\>/ || 
	/\<\/DL\>/ ||
	/\<DD\>/ ||
	/\<DT\>\<H/
	) {
	# strip out boring stuff
	if ( /\<\/DL\>/ ) {
	    $new[$level] = $new[$level]."<hr noshade size=1>\n" ; $level -- ;  }
	s/<p>// ; # trivial changes to appearance
	s/\<H[^\>]*\>([^\<]*)\<[^\>]*\>/<b><a>$1<\/a><\/b>/ ;

	# put in the pointers
	$nextl = $level + 1 ;
	$n[$nextl] ++ ;
	$num = $n[$nextl] ;
	s/<a>/<<a href=\#$nextl.$num>/ ;
# this string appears ordinary style in all higher levels
	# actually, why not make it point back to the relevant dude?
	for ( $l = $level + 2 ; $l <= $maxl ; $l ++ ) {
	    $new[$l] = $new[$l].$_ ;
	}
	# add a pointer thingy to this level's links
	s/<<a h/\-><a h/ ;
	$l = $level ;
	$new[$l] = $new[$l].$_ ;
	$l = $level + 1 ;
	s/\-><a href=\#/<a name=/ ;
	
	$new[$l] = $new[$l].$_ ;

	if ( /\<DL\>/ ) { $level ++ ;
		      if ($level >$highestl) { $highestl = $level ; }
		      }
    }
    else {
	$new[$level] = $new[$level].$_ ;
    }
}
for ( $l = 0 ; $l <= $highestl ; $l ++ ) {
#    print "<hr noshade size=1><h3>Level $l</h3>\n" ;
        print "<hr noshade size=1>\n" ;
   print $new[$l] ; 
}
print "<hr noshade size=1>" ;




