#!/usr/local/bin/perl
#
# HTML 文書にセクション番号を入れるための perl スクリプト
#
# 以下のようにして使用します.
#
# > cat sample_orig.html | htmlsec.pl | htmltoc -123456 > sample.html
#
# (htmltoc は目次を作成するためのフィルタで,noweb というフリーソフトの
# 一部です)
#
#
せくしょん1
のような部分に,
# 1 せくしょん1
のように,セクション番号を入れます.
#
# 対象となるのは,...
や ...
のみでできた行です.
# たとえば,
# せくしょん1
# や,
# せくしょん1
# のような行は,変更されずにそのままになります.
#
$num1 = 0;
$num2 = 0;
$num3 = 0;
$num4 = 0;
$num5 = 0;
$num6 = 0;
while (<>) {
if (/^\s*.*<\/h1>\s*$/i) {
($tagstart, $name, $tagend) = /^\s*()(.*)(<\/h1>)\s*$/i;
$num1 = $num1 + 1;
$num2 = 0;
$num3 = 0;
$num4 = 0;
$num5 = 0;
$num6 = 0;
$_ = $tagstart . $num1 . " " . $name . $tagend;
} elsif (/^\s*.*<\/h2>\s*$/i) {
($tagstart, $name, $tagend) = /^\s*()(.*)(<\/h2>)\s*$/i;
$num2 = $num2 + 1;
$num3 = 0;
$num4 = 0;
$num5 = 0;
$num6 = 0;
$_ = $tagstart . $num1 . "." . $num2 . " " . $name . $tagend;
} elsif (/^\s*.*<\/h3>\s*$/i) {
($tagstart, $name, $tagend) = /^\s*()(.*)(<\/h3>)\s*$/i;
$num3 = $num3 + 1;
$num4 = 0;
$num5 = 0;
$num6 = 0;
$_ = $tagstart . $num1 . "." . $num2 . "." . $num3 . " " . $name . $tagend;
} elsif (/^\s*.*<\/h4>\s*$/i) {
($tagstart, $name, $tagend) = /^\s*()(.*)(<\/h4>)\s*$/i;
$num4 = $num4 + 1;
$num5 = 0;
$num6 = 0;
$_ = $tagstart . $num1 . "." . $num2 . "." . $num3 . "." . $num4 . " " . $name . $tagend;
} elsif (/^\s*.*<\/h5>\s*$/i) {
($tagstart, $name, $tagend) = /^\s*()(.*)(<\/h5>)\s*$/i;
$num5 = $num5 + 1;
$num6 = 0;
$_ = $tagstart . $num1 . "." . $num2 . "." . $num3 . "." . $num4 . "." . $num5 . " " . $name . $tagend;
} elsif (/^\s*.*<\/h6>\s*$/i) {
($tagstart, $name, $tagend) = /^\s*()(.*)(<\/h6>)\s*$/i;
$num6 = $num6 + 1;
$_ = $tagstart . $num1 . "." . $num2 . "." . $num3 . "." . $num4 . "." . $num5 . "." . $num6 . " " . $name . $tagend;
}
print $_;
}
# end of file.