#!/usr/bin/perl

use POSIX;

### ローカルセッティング #############################################

$outfile = "export.yusuke.2003";
$author  = "yusuke";

######################################################################

@hnf_files = <*.hnf>;

open(OUT, ">$outfile") || die "$outfile not found.\n";

my $num = 0;
foreach $i (@hnf_files){
  print "processing $i ... ";

  my $flag = 0;

#  $mtime = strftime("%m/%d/%Y %I:%M:%S %p",localtime((stat($i))[9]));

  $year = substr($i,1,4);
  $mon  = substr($i,5,2);
  $day  = substr($i,7,2);
  $mtime = "$mon/$day/$year 00:00:00 AM";

  my %HEADER = ("AUTHOR", $author, "DATE", $mtime);

  open(IN, $i) || die "$i not found.\n";
  while (<IN>){
    #~を全て除去するってのをはずす
    #s/~//g;
    if(/^OK$/) { next; }
    if(/^TENKI (.*)$/) {
      %HEADER = (%HEADER, "TENKI", $1);
      next;
    }
    if(/^\n$/) { next; }
    if(/^CAT (.*)$/) {
      %HEADER = (%HEADER, "CATEGORY", $1);
      next;
    }
    #LSUBを追加
    if(/^(NEW|LNEW) (.*)/) {
      if ($flag) {
        print OUT "-----\n";
        print OUT "EXTENDED BODY:\n";
        print OUT "\n";
        print OUT "-----\n";
        print OUT "EXCERPT:\n";
        print OUT "\n";
        print OUT "-----\n";
        print OUT "KEYWORDS:\n";
        print OUT "\n";
        print OUT "-----\n";
        print OUT "\n\n";
        print OUT "--------\n";
      }else{
        $flag = 1;
      }

      #LNEWとLSUBの時の処理を追加
      my $titleKouho = $2;
      if($1=~/^LNEW/){
        #$2が"URL タイトル"となっているのをURLを削る
        my @urlAndTitle = split(/ /, $titleKouho,2);
        %HEADER = (%HEADER, "TITLE", @urlAndTitle[1]);
        %HEADER = (%HEADER, "URL", @urlAndTitle[0]);
      }else{
        %HEADER = (%HEADER, "TITLE", $2);
      }
      print OUT "AUTHOR: $HEADER{\"AUTHOR\"}\n";
      print OUT "TITLE: $HEADER{\"TITLE\"}\n";
      print OUT "STATUS: Publish\n";
      print OUT "ALLOW COMMENTS: 1\n";
      #brをちゃんと書いてるのでCONVERT BREAKSしない
      print OUT "CONVERT BREAKS: 0\n";
      print OUT "ALLOW PINGS: 1\n";
      print OUT "PRIMARY CATEGORY: $HEADER{\"CATEGORY\"}\n";
      print OUT "CATEGORY: $HEADER{\"CATEGORY\"}\n";
      print OUT "\n";
      print OUT "DATE: $HEADER{\"DATE\"}\n";
      print OUT "-----\n";
      print OUT "BODY:\n";
      if($HEADER{"TENKI"}) { print OUT "天気：$HEADER{\"TENKI\"}<br />\n"; }
      #LSUBやLNEWで設定したURLのリンクをBodyの最初に表示する
      if($HEADER{"URL"}) {print OUT "<a href=\"$HEADER{\"URL\"}\">$HEADER{\"TITLE\"}</a><br />\n";}
      #プリントしたら初期化
      $HEADER{"URL"} = "";
      next;
    }
    #~で終わっていたら<br />に変換
    if(/(.*)(~)$/){
      print OUT "$1<br />\n";
      next;
    }

    #SUBの時はh4で囲む
    if(/^SUB (.*)$/){
      print OUT "<h4>$1</h4>\n";
      next;
    }
    #LSUB
    if(/^LSUB (.*?) (.*)$/){
      print OUT "<h4><a href=\"$1\" target=\"_new\">$2</a></h4>\n";
      next;
    }
    #自分サイトに飛ばしていた際の処理
    if(/^(LINK|URL) (.*?) (.*)$/) {
      my $href = $2;
      my $sitename = $3;
      if($href=~/^http:\/\/web.sfc.keio.ac.jp\/~t00274yw\/diary\/\?.*&to=.*\#(.*)/){
        my $uyear = substr($1,0,4);
        my $umon  = substr($1,4,2);
        my $uday  = substr($1,6,2);
        $href= "http:\/\/yusukebe\.com\/archives\/$uyear\_$umon\_$uday\.html";
      }
      print OUT "<a href=\"$href\" target=\"_new\">$sitename</a>\n";
      next;
    }
    if(/^URL (.*)$/){
      print OUT "<a href=\"$1\" target=\"_new\">$1</a>\n";
    }
    
    #IMGの処理、URLがずれちゃうことを考慮
    if(/^IMG (r|l|n) (.*?) (.*)$/){
      my $align = $1;
      my $src = $2;
      my $alt = $3;
      if($src=~/^(pic\/.*)/){
        $src = 'http://yusukebe.com/archives/'.$1;
      }
      #alignの処理
      if($align =~/r/){
        print OUT "<img align=\"right\" src=\"$src\" alt=\"$alt\" />\n";
      }elsif($align =~ /l/){
        print OUT "<img align=\"left\" src=\"$src\" alt=\"$alt\" />\n";
      }else{
        print OUT "<img src=\"$src\" alt=\"$alt\" />\n";
      }
      next;
    }
    #    if(/^IMG (.*) (.*) (.*)$/) {
    #    }
    if(/^LIMG (.*) (r|l|n) (.*?) (.*)$/) {
      my $href = $1;
      my $align = $2;
      my $src = $3;
      my $alt = $4;
      if($src=~/^(pic\/.*)/){
        $src = 'http://yusukebe.com/archives/'.$1;
      }
      if($align =~/r/){
        print OUT "<a href=\"$href\"><img align=\"right\" src=\"$src\" alt=\"$alt\" /></a>\n";
      }elsif($align =~ /l/){
        print OUT "<a href=\"$href\"><img align=\"left\" src=\"$src\" alt=\"$alt\" /></a>\n";
      }else{
        print OUT "<a href=\"$href\"><img src=\"$src\" alt=\"$alt\" /></a>\n";
      }
      next;
    }
#    if(/^LI$|^LI $/) {
#      print OUT "<li>\n";
#      next;
#    }
    if(/^LI (.*)$|^LI$/) {
      print OUT "<li>$1\n";
      next;
    }
    #DIVの時の処理
    if(/^DIV (.*)/){
      print OUT "<div class=\"$1\">";
      next;
    }
    if(/^\/DIV/){
      print OUT "</div>\n";
      next;
    }
    if(/^(UL|\/UL)$/)     { print OUT "<",lc($1),">\n"; next; }
    if(/^(OL|\/OL)$/)     { print OUT "<",lc($1),">\n"; next; }
    if(/^(P|\/P)$/)       { print OUT "<",lc($1),">\n"; next; }
    if(/^(CITE|\/CITE)$/) { print OUT "<",lc($1),">\n"; next; }
    if(/^(PRE|\/PRE)$/)   { print OUT "<",lc($1),">\n"; next; }
    if(/^MARK (.*)$/) { print OUT "*旧システムの顔文字アイコン* $1\n"; next; }
    if(/^STRONG (.*)$/) { print OUT "<strong>$1</strong>"; next; }
    if(/^STRIKE (.*)$/) { print OUT "<strike>$1</strike>"; next; }
    if(/^FONT (.*) (.*) (.*)$/){
      print OUT "<font color=\"$2\">$3</font>\n";
      next;
    }
    print OUT $_;
  }
  print OUT "-----\n";
  print OUT "EXTENDED BODY:\n";
  print OUT "\n";
  print OUT "-----\n";
  print OUT "EXCERPT:\n";
  print OUT "\n";
  print OUT "-----\n";
  print OUT "KEYWORDS:\n";
  print OUT "\n";
  print OUT "-----\n";
  print OUT "\n\n";
  print OUT "--------\n";

  close(IN);
  print "done.\n";
  $num++;
}
close(OUT);

print "\n$num files are processed.\n";
print "$outfile is created successfully.\n";
