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";
}