#!/usr/local/bin/perl
# 
# tips2html: 
# 
#     [1996/05/28] OSHIRO Naoki.
# 
#     $Log: link2html,v $
#     Revision 0.2  1996/05/14 09:10:47+09  oshiro
#     *** empty log message ***
#
#     [1996/05/28]
#       ・link2html をコピーして借りて来た．
#     [1996/08/13]
#       ・<LI> に VALUE 属性を持たせて最新順に並べられるようにした．
#         --> '-r' のリバースオプションにした．
#     [1996/08/17]
#       ・項目タイトル冒頭に日付が含まれている場合に，これをリンク情報を無視．
#     [1996/09/20]
#       ・記事出力部の番号参照間違いを訂正．
#     [1996/10/29]
#       ・行頭 '@@' によりパート指定できるようにした．
#     [1997/07/03]
#       ・各項目出力に "[^TOP]","[>NEXT]" を付加した．
#     [1997/10/16]
#       ・Start 部に <A NAME="start"> を付けてみた．
#       ・フレーム表示用にリストからのリンクに TARGET 属性を付けてみた．
#     [1997/11/07]
#       ・jweblint のチェック結果に沿ってまともな HTML を生成するように修正．
#

#
# Usage: tips2html [-r] tips-file > html-file
#

require "/home/grp1/oshiro/bin/forhtml.pl";

require "getopts.pl";
&Getopts('ric:f'); # r: reverse, i: itemize, c: bgcolor, f: for HTML Frame
$bg_color="#e6e6fa";
$bg_color=$opt_c if $opt_c;

$ltype=OL;
$ltype=UL if ($opt_i);

$com_name=&basename($0);
$author="Oshiro Naoki";
$email="oshiro\@robotics.me.es.osaka-u.ac.jp";
$revision='$Revision: 0.1 $';
($ver)=$revision=~/:\s*(.+)\s*\$/;

$_=<>;
&forhtml($_);
&print_header("bgcolor=\"$bg_color\"");

print "<!-- This document produced by $com_name -->\n";
print "<!-- -->\n";
print "<!--     $com_name Ver.$ver was create by $author -->\n";
print "<!--     E-mail: $email -->\n";

$url_0="";

$n=-1;
while (<>) {
    if (s/^@@\s*//) {
	$part_title[$pn++]=$n+1 . ":$_";
	next;
    } elsif (s/^@\s*//) {
	chop;
	$article[$n]=~s/\n(\s*\n)+$// if ($n>=0);
	$title[++$n]=$_;
	next;
    }
    $article[$n].=$_ if ($n>=0);
}
$n++;
$part_title[$pn]="$n:";
$pn_max=$pn;

#
# リンクリスト生成
#
print "<HR>\n";
print "<H2><A NAME=\"link0\">Contents</A></H2>\n";
print "<DIV ALIGN=\"right\">";
$tmp=(!$opt_r)? 1:$n;
print "<A NAME=\"start\"><!-- START --></A><A HREF=\"#link$tmp\"><IMG SRC=\"http:/~oshiro/gif/tri.down.gif\" BORDER=\"0\" ALT=\"\">START</A>" if ($tmp <= $n); 
print "</DIV>\n";
print "<$ltype>\n";
$pn=0; $k=$pn; $k=$pn_max-$pn if ($opt_r);
($pn_next, $pn_title)=($1, $2) if ($part_title[$k]=~/^(\d+):\s*(.*)$/);
for ($i=0; $i<$n; $i++) {
    $j=$i+1; $j=$n-$i if ($opt_r);
    if ($pn_max>0 && ((!$opt_r && $pn_next<=$i) || ($opt_r && $pn_next>=$j))) {
	print "</$ltype>\n\n";
	print "$pn_title";
	print "<$ltype>\n";
	$pn++; $k=$pn; $k=$pn_max-$pn if ($opt_r);
	($pn_next, $pn_title)=($1, $2) if ($part_title[$k]=~/^(\d+):\s*(.*)$/);
    }
    $title[$j-1]=~m#^(\[[-_\d\?]{4}/[-_\d\?]{2}/[-_\d\?]{2}(\s+[-_\d\?]{2}:[-_\d\?]{2})?\])?(.+)$#;
    ($date, $title)=($1, $3);
    print "<LI VALUE=\"$j\">$date <A HREF=\"#link$j\"";
    print " TARGET=\"foo\"" if $opt_f;
    print ">$title</A>\n";
}
print "</$ltype>
※自動生成のため項目順序が変わる可能性があります．
<HR>\n\n";

#
# 実体出力
#
print "<$ltype><A NAME=\"list_top\"><!-- LIST_TOP --></A>\n";
$pn=0; $k=$pn; $k=$pn_max-$pn if ($opt_r);
($pn_next, $pn_title)=($1, $2) if ($part_title[$k]=~/^(\d+):\s*(.*)$/);
for ($i=0; $i<$n; $i++) {
    $j=$i+1;  $j=$n-$i if ($opt_r);
    if ($pn_max>0 && ((!$opt_r && $pn_next<=$i) || ($opt_r && $pn_next>=$j))) {
#	print "Error---------\n";
	print "</$ltype>\n\n";
	print "<H2>■$pn_title</H2>";
	print "<$ltype>\n";
	$pn++; $k=$pn; $k=$pn_max-$pn if ($opt_r);
	($pn_next, $pn_title)=($1, $2) if ($part_title[$k]=~/^(\d+):\s*(.*)$/);
    }
    $title[$j-1]=~m#^(\[[-_\d\?]{4}/[-_\d\?]{2}/[-_\d\?]{2}(\s+[-_\d\?]{2}:[-_\d\?]{2})?\])?(.+)$#;
    ($date, $title)=($1, $3);
    print "<LI VALUE=\"$j\">$date <A NAME=\"link$j\">$title</A>\n";
    print "<DIV ALIGN=\"right\">";
    print "<A HREF=\"#link0\"><IMG SRC=\"http:/~oshiro/gif/tri.up.gif\" BORDER=\"0\" ALT=\"\">Top</A>";
    if (!$opt_r) {$tmp=$j-1} else {$tmp=$j+1};
    print ", ";
    print "<A HREF=\"#link$tmp\">" if ($tmp>=0);
    print "<IMG SRC=\"http:/~oshiro/gif/tri.left.gif\" BORDER=\"0\" ALT=\"\">Prev";
    print "</A>" if ($tmp >= 0); 
    if (!$opt_r) {$tmp=$j+1} else {$tmp=$j-1};
    print ", ";
    print "<A HREF=\"#link$tmp\">" if ($tmp <= $n);
    print "<IMG SRC=\"http:/~oshiro/gif/tri.right.gif\" BORDER=\"0\" ALT=\"\">Next";
    print "</A>" if ($tmp <= $n); 
    print "</DIV>\n";
    #print "<BR>\n";
    print $article[$j-1];
    print "<HR>\n\n";
}
print "</$ltype>\n";
print "<HR>\n";

&print_footer;

# major-mode: perl
