#!jperl
# 百科事典形式から HTML形式へのコンバート
#
# 96/11/20 0.20
# とりあえずまじめに書きなおしはじめる。
# 拡張子を自動で付け替えるようにした。
# ……とりあえず百科事典のコンバータは作成しました。ちゃんと16進に変換す
#るのでOKだと思います。副産物として、辞典の各項目のインデックスの生成が可
#能になり、今まで使用されていなかった→による関連語リンクが生きるようにな
#りました。いやー、本気で便利です。
# 今後は百科事典から抽出した用語解説を、setextの変換時に自動的にリンクと
#して取り込めるようにしたいですね。初出語には開設リンクが張れるようにする、
#というわけです。
#
# 96/11/22 0.21
#・項目名と項目内容のあいだに空白が入るのを処置した。
#・&や<や>のhtml中では生で書いてはいけない文字に対する変換処理を追加。
#・
と中身が空のリストを除去する
$infile = $ARGV[0];
$name = "";
$first_indent_flag="NO";
open(IN, "<$infile");
while () {
chop;
s/&/\&\;/g;
s/\\</g;
s/\>/\>/g;
if (/^□(.*)/) {# タイトル認識
$name=$1;
}elsif (/^☆([^ ]*)/) {
$anchor = unpack("H*",$1);
#$anchor = $1;
# $val=~ s/%(..)/pack("c", hex($1))/ge;
#$bits = unpack("c*", $vector);
#$anchor =~ s/./pack("c", hex($1))/ge;
if ($1 eq "あ"){
$list.="\n\n";
}else {
$list.="
\n\n\n";
}
}elsif (/^([^ ]+)【([^】]+)】《([^》]+)》$/) {
$anchor = unpack("H*",$2);
$anchor1 = unpack("H*",$1);
$index .= "
$2\n";
$list.="$1\n";
$list.="$2《$3》\n";
$first_indent_flag="YES";
}elsif (/^([^ ]+)《([^》]+)》$/){
$anchor = unpack("H*",$2);
$index .= "$2\n";
$list.="$1《$2》\n";
$first_indent_flag="YES";
}elsif (/^\t→(.+)/ || /^ →(.+)/ || /^ →(.+)/){
$anchor = unpack("H*",$1);
if ($first_indent_flag eq "YES"){
$list.="$1\n";
$first_indent_flag="NO";
}else{
$list.="
$1\n";
}
}elsif (/^\t (.*)/ || /^ (.*)/ || /^ ([^ →]+)/){
if ($first_indent_flag eq "YES"){
$list.="$1";
$first_indent_flag="NO";
}else{
$list.="
$1\n";
}
}elsif (/^[\t ]+【(.*)】(.*)$/){
# 内部に説明項目を入れる場合
# if ($first_indent_flag eq "YES"){
$list.="
【$1】$2";
# $first_indent_flag="NO";
# }else{
# $list.="
$1\n";
# }
}elsif (/^\t([^ →]+)/ || /^ ([^ →]+)/ || /^ ([^ →]+)/){
$list.="$1\n";
}
}
close(IN);
$list .="<\/DL>";
$list =~ s/\n<\/DL>//g;#空の除去
$list =~ s/<\/DL>//g;#空の除去
($filename,$ext)=split(/\./,$infile,2);
$outfile = $filename . ".HTM";
open(OUT,">$outfile");
print OUT<
$filename Page
$name
$list
連絡先 / ディレクトリルートに戻る / 語り部総本部
EOF
__END__