#!/usr/local/jperl
# setext形式エピソードから HTML形式へのコンバート
# jperl EP2HTML.PL HAP06???.ETX
#
# 96/12/23-24
# SE2HTML.PL より作成
# 97/01/04
# 「 ---- 」で囲まれた部分をPREにするが

foreach (@ARGV) {
$infile = $_;
$name = "";
$backline="";
$index="";
$list="";
$filename="";
$outfile ="";
$flag ="DL OFF";
$pre ="OFF";

open(IN, "<$infile");
#行単位で処理するものの調査
while (<IN>) {
	chop;
	s/&/\&amp\;/g;
	s/\</\&lt;/g;
	s/\>/\&gt;/g;
	$now_line = $_;
	if ($pre eq "ON"){
		$list.=$backline;
		if (/^ -+[ ]*$/) {
			$now_line="<\/PRE>\n<HR>\n";
			$pre ="OFF";
		} else {
			$now_line.="\n";
		}
	} elsif (/^ -+[ ]*$/) {
		$now_line="<HR>\n<PRE>\n";
		$pre ="ON";
		$list.=$backline;
	} elsif (/^=+$/){
		if ($flag eq "DL ON"){
			$list.="</DL>\n";
			$flag ="DL OFF";
		}
		if ( length($backline)==length($now_line) ){
			$title = $backline;
			$anchor = unpack("H*",$backline);
			if ($name eq ""){
				$name=$backline;
				$index .= "<LI><A HREF=\"#$anchor\">$backline</A>\n<UL>\n";
				$list.="\n<H2><A NAME=\"$anchor\" HREF=\"#TOP\">$backline</A></H2>\n<P>\n";
			}else{
				$index .= "</UL>\n<LI><A HREF=\"#$anchor\">$backline</A>\n<UL>\n";
				$list.="\n<H2><A NAME=\"$anchor\" HREF=\"#TOP\">$backline</A></H2>\n<P>\n";
#				$list.="\n</P>\n<H2><A NAME=\"$anchor\" HREF=\"#TOP\">$backline</A></H2>\n<P>\n";
			}
			$now_line="";
		}else{
			$list.=$backline;
		}
	}elsif (/^-+$/){
		if ($flag eq "DL ON"){
			$list.="</DL>\n";
			$flag ="DL OFF";
		}
		if ( length($backline)==length($now_line) ){
			$anchor = unpack("H*",$backline."_".$title);
			if ($name eq ""){
				$name=$backline;
				$index .= "<LI><A HREF=\"#$anchor\">$backline</A>\n";
				$list.="\n<H3><A NAME=\"$anchor\" HREF=\"#TOP\">$backline</A></H3>\n<P>\n";
			}else{
				$index .= "<LI><A HREF=\"#$anchor\">$backline</A>\n";
				$list.="\n<H3><A NAME=\"$anchor\" HREF=\"#TOP\">$backline</A></H3>\n<P>\n";
#				$list.="\n</P>\n<H3><A NAME=\"$anchor\" HREF=\"#TOP\">$backline</A></H3>\n<P>\n";
			}
			$now_line="";
		}else{
			$list.=$backline;
		}
	}else{
		if (/^[(　)(・)(  )](.+)\t*：(.+)$/){
			if ($flag eq "DL OFF"){
				$now_line = "\n<DL><DT><STRONG>$1<\/STRONG>\n<DD>$2\n";
				$flag="DL ON";
			}else{
				$now_line = "\n<DT><STRONG>$1<\/STRONG>\n<DD>$2\n";
			}
		}elsif (/^\t\t：[　(  )](.+)$/){
			if ($flag eq "DL ON"){
				$now_line="<BR>$1";
			}else{
				$now_line="<BR>$1";
			}
		}elsif (/^\t\t：(.*)$/){
			if ($flag eq "DL ON"){
				$now_line="$1";
			}else{
				$now_line="<BR>$1";
			}
		}elsif (($_ eq "") & ($flag eq "DL ON")){
			$now_line="\n</DL>\n";
			$flag = "DL OFF";
		}elsif (/^[　(  )](.*)$/){
			$now_line="</P>\n<P>\n$1";
		}elsif (/^([「『・#(])(.*)$/){
			$now_line="</P>\n<P>\n$1$2";
		}
		$list.=$backline;
	}
	$backline=$now_line;
}
close(IN);

if ($flag eq "DL ON"){
	$list.="</DL>\n";
	$flag = "DL OFF";
}

$index.="<\/UL>";
$index =~ s/<UL>\n<\/UL>/\n/g ;#空の除去
#$index =~ s/<\/DL>\n/<\/DL>\n<P>/g ;
#$index =~ s/<\/DL>\n<\/P>/<\/DL>\n<\P>/g;

$list =~ s/<UL>\n<\/UL>/\n/g ;#空の除去
$list =~ s/<P>\s+<\/P>/\n/g ;#用心のため

#</P><P>って、<BR>　にすると現行のスタイルになるのか。
$list =~ s/<\/P>\s+<P>/<BR>\n　/g;

$list =~ s/<DL>/<DL COMPACT>/g;
#$list =~ s/<DL>/<\/P><DL COMPACT>/g;

# 強調などの処理
$list =~ s/\*\*(.*)\*\*/<STRONG>$1<\/STRONG>/g;#強調


($filename)=split(/\./,$infile,2);
$outfile = $filename . ".HTM";
open(OUT,">$outfile");


print OUT<<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML lang="ja">
<HEAD>
<TITLE>$filename Page</TITLE>
<LINK REV=MADE HREF="mailto:sf\@kataribe.com">
<LINK REL=STYLESHEET TYPE="text/css" HREF="/text.css" TITLE="Text_sf">
</HEAD>
<BODY BGCOLOR="#FFFFF0" TEXT="Black" LINK="Blue" VLINK="Purple" ALINK="red">
<H1 ALIGN="CENTER">$name</H1>
<HR>
<H2 ALIGN="CENTER"><A NAME="TOP">目次</A></H2>
<UL>
$index
</UL>
<HR>
$list
<HR>
<ADDRESS>
<P ALIGN="CENTER">
<A HREF="mailto:sf\@kataribe.com">連絡先</A> / <A HREF="./">ディレクトリルートに戻る</A> / <A HREF="/">語り部総本部</A>
</P>
</ADDRESS>
</BODY>
</HTML>
EOF

}

__END__
