あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

Yukiwikiの個別ページをScrapboxの書式に擦り合わせる

ファイル名をunquoteしてある前提で、YukiwikiのファイルをScrapboxに貼り付けて困るのは、リンクのルールが一重大かっこである点です。二重大かっこですと、太字になるだけです。

そこで、YukiwikiのWikinameすなわちリンクワードを、二重大かっこ[[]]から一重大かっこ[]に置換することで、コピペ貼り付けの時にいちいち括弧を取り除く必要がなくなります。

ほんとはこれにURLを一重かっこで囲うのも入れたかったが、とりあえず移行できればいいのでさぼりました。URL続きの日本語もリンクになってしまうので、そのうちやります。InterWikiもURL補完したかったのですが、これは難しそうなのでやっていません。

こちらもpythonでやりたかったですが、上ので懲りたので、目的優先でperlに逃げました。この作業はWindows上でやりましたので、ファイル名がshiftjisであることを前提にしています。他の環境の方はEncodeのあたりを調整してください。

これのおかげで、だいぶコピペが捗りまして、400ページ強の全データをScrapboxに移行でき、ページ同士のリンク関係もある程度Scrapbox上で構築できました。

use Encode;
 
 while(<.//res//*.txt>){
 	$fname = $_;
 	#ファイル名だけ抽出する(*.txt)
 	$fname =~ s/\.\/\/res\/\///;
 	print $fname."\n";
 
 	#ファイルをオープン
 	open(FH,".//res//$fname");
 	open(FH2,"> .//res2//$fname");
 
 	# Scrapbox用に、先頭にファイル名=タイトル名(.txtを取り去る)を書き込む
 	#ファイル名=shiftjisなので、デコードした上で本文と同じEUCで書きこむ。
 	$fname =~ s/\.txt$//;
 	my $decoded = Encode::decode("shiftjis", $fname);
 	my $fname_euc = Encode::encode("euc-jp", $decoded);
 	print  FH2 $fname_euc."\n\n";
 
 	#ファイルを1行ごとに読み込み、2重カギカッコを1重にして吐き出す
 	while(<FH>){
 		$line = $_;
 		$line =~ s/\[\[(.+)\]\]/\[$1\]/g;
 		print FH2 $line; 
 	}
 	
 	#ファイルを閉じる
 	close (FH2);
 	close (FH);
 }