#!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; 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.="

$1

\n
\n"; }else { $list.="
\n

$1

\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

    索引

      $index

    連絡先 / ディレクトリルートに戻る / 語り部総本部

    EOF __END__