namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: namazu.el



toshiaki@xxxxxxxxxxxxxxxxxxxxxxxxxxxx (Toshiaki -PCX- Tanaka) wrote:

>kose> ;;; 今後ともよろしくお願いします。
>
> むかし、HTML内の<H[1-6]>タグから目次とアンカーを生成するperl
>スクリプトは作ったんですが、どこへ行ったことやら :-) 。

私が個人的に使っているスクリプトはこんな感じです (メイル末尾
に添付します)。あらかじめ <h[2-6]> の内側にアンカーが付加さ
れている HTMLファイルの目次を作ります。

# Namazu の manual.html の目次はこれで作っています。

-- Satoru Takabayashi

#!/usr/bin/perl -w
use NKF;

$_ = join '', <>;
$_ = nkf("-e", $_);

my $n = 0;
while (1) {
    if (s/^\s*<h([2-6])[^>]*><a name="([^"]*)">([^<>]*)<\/A><\/h\1>//ism) {
	$level   = $1;
	$anchor  = $2;
	$heading = $3;
    } elsif (s/^\s*<h([2-6].*?) id="([^"]*)">([^<>]*)<\/h\1>//ism) {
	$level   = $1;
	$anchor  = $2;
	$heading = $3;
    } else {
	last;
    };
    if ($level > $n) {
	print "  " x ($level - 2);
	print "<ul>\n";
    } elsif ($level < $n) {
	for ($i = $level; $i < $n; $i++) {
	    print "  " x ($n - $i);
	    print "</ul>\n";
	}
    }
    $n = $level;
    print "  " x ($n - 2);
    print "<li><a href=\"#$anchor\">$heading</a>\n";
}
for ($i =  1; $i < $n; $i++) {
    print "  " x ($n - $i -1);
    print "</ul>\n";
}