Thursday, November 15, 2012

用語置換ツール


このところ、納期の厳しい仕事が重なったため、目先のスピード重視で作業をしていました。いろいろ工夫する余裕もなくて、用語一括置換+並べ替え、というのを繰り返すことに…。

用語置換には、いつも、BuckeyeさんのSimplyterms を使わせてもらってます。このソフトは、シンプルながらも多機能で、いろいろ使えるのですが、私が利用するのは、用語集に基づく一括置換という単純な作業ばかりです。

仕事が一段落したので、ちょっと何かしてみたくなり、この用語一括置換機能を、自前でやってみることにしました。いろいろなツールに手を出してしまい、いつまでも技術が身につかないので、当面、JavaScript と WSH に集約しようと思い、今回もそれで作ってみました。自分の作業の流れに合わせてあるので、何の汎用性も面白みもないのですが、プログラムのお勉強ということで(笑)

自分の作業上の都合により、
・原文ファイル:jpsrc.txt
・用語集ファイル:terms.txt
にしているので、ファイル名は固定としました(苦笑)

ちなみに、用語集は、
「原文の用語」(TAB)「置換後の用語」(改行)
というシンプルなものです。

以下のコードを "tmcnv.js" といった、「~.js」の名前で保存し、実行すると、置換済ファイル("src.txt")が作成されます。


//用語置換"tmcnv.js"
var str, tmline, tmpc;
var fs = new ActiveXObject("Scripting.FileSystemObject");
var file = fs.OpenTextFile("jpsrc.txt", 1, true);
var str = file.ReadAll();
file.Close();

//terms.txtで置換処理
function replaceAll(expression, org, dest){
    return expression.split(org).join(dest);
}

file = fs.OpenTextFile("terms.txt", 1, true);
while(!file.AtEndOfStream)
{
    tmline = file.ReadLine();
    tmpc = tmline.split("\t");
    str = replaceAll(str, tmpc[0], " "+tmpc[1]+" ");
}
file.Close();

//ファイル書き込み
file = fs.OpenTextFile("src.txt", 2, true);
file.Write(str);
file.Close();
// オブジェクト解放
fs = null;


まだ、この程度のものしか書けませんが、いろいろやってみようと思います。とりあえず、Simplyterms のお世話にならずに、用語置換ができるようになりました。