﻿#このスクリプトは、語釈や暦日の関連ファイルへのリンクを全て削除し、別名で出力する。
#1.文字コードなどの定義
use strict;
use warnings;
use utf8;
use Encode qw/encode decode/;

#2.読み込みと書出し用のファイルを開く
my $file1 = 'shakumon.txt';
open my $fh1, '<', $file1
  or die "Can't open $file1:$!";

my $file2 = 'gaijiichiran.txt';
open my $fh2, '<', $file2
  or die "Can't open $file2:$!";

my $file3 = 'shakumon(linknuki).txt';
open my $fh3, '>>', $file3
  or die "Can't open $file3:$!";
  
my $logfile = 'log.txt';
open my $lh, '>', $logfile
  or die "Can't open $logfile:$!";


#3.変数の定義
my @shakumon;
my @gaiji = [''];#外字画像へのリンクの通し番号は「1」から始まるから、$gaiji[0]を空の文字列とする
my $gaijiichiji = '';
my $line = "";


#4.データの読み込み
#4.1.外字データ
while ($line = <$fh2>) {
	#4.1.1.ユニコード関係の設定
	$line =decode('utf8', $line);
	$line =~ s/[\?\r\n\f]//g;
	$line =~ s/^\x{FEFF}//;
	if ($line =~ /^([^\t]+)\t([^\t]+)$/){
		push(@gaiji,$2)
	}
	else {
		print $lh(encode('utf8', "Mismatch for $line\n"));
	}
}

#4.2.釈文データ
while ($line = <$fh1>) {
	#4.1.ユニコード関係の設定
	$line =decode('utf8', $line);
	$line =~ s/[\?\r\n\f]//g;
	$line =~ s/^\x{FEFF}//;
	
	#4.2.<a>と<p>タイプのタグの削除
	$line =~ s/\t*<a[^L>]+Liya-zuhan[^>]+>[^<]+<\/a>//;#釈文末尾の簡番号をリンクと共に削除
	$line =~ s/<\/?[ap][^>]*>//g;#語釈と暦日のリンクおよび<p>タグを削除
	
	#4.3.外字の置換
	while ($line =~ /<img[^g>]+gaiji0+(\d+)/){
		$gaijiichiji = $gaiji[$1];
		$line =~ s/<img[^g>]+gaiji[^>]+>/$gaijiichiji/;
	}
	
	#4.4.置換済みデータを蓄積
	push(@shakumon,$line);
}
#5.ファイルの出力
foreach $line (@shakumon){
    print $fh3 (encode('utf8', "$line\n"));
}

#6.ファイルを閉じる
close $fh1;
close $fh2;
close $fh3;
close $lh;