/*
ニコニコ大百科IME辞書
http://tkido.com/blog/1019.html
を、SKK辞書に変換する。
【使用法】
1. 辞書をダウンロードして解凍
2. 辞書ファイルと同じ場所に本スクリプトを置いて実行
3. 生成されたskk-nico.txtを辞書フォルダへ
ひらがなを確定なしで直接入力するSKKの仕様上、変換前後の文字が完全に一致している候補は
標準ではコメントアウトします。候補に含めたい場合は最後の引数を真に変更してください。
最後のファイル名部分を書き換えることで他の辞書の変換にも利用できます。
なお、SKKFEPβ0+4iからはこの変換作業は不要となりファイルのリネームだけで直接読み込めます。
*/
F = new ActiveXObject("Scripting.FileSystemObject")
/// IMEテキスト辞書からSKK辞書に変換
function ime2skk(infile, outfile, hiragana)
{
// 文字コードを変換し行単位に分割
var a
with (new ActiveXObject("ADODB.Stream")) {
Type = 2
Charset = "iso-8859-1"
Open()
LoadFromFile(infile)
var t = ReadText(2)
Close()
Charset = t == "\xFF\xFE" ? "utf-16" : "_autodetect"
Open()
LoadFromFile(infile)
a = ReadText(-1).split(/\r|\n|\r\n/)
Close()
}
// 変換
var d = {}, o = [";; okuri-ari entries.", ";; okuri-nasi entries."]
for (var l in a) {
var z = a[l].split("\t"), b = z[0], c = z[1]
if (b.charAt(0) == "!" || b.length == 0 || c.length == 0) {
o.push(";" + a[l])
continue
}
if (b == c && !hiragana)
b = ";" + b
if (c.match(/^\[|^\]|\/|;/))
c = "(concat \"" + c.replace(/\"/g, "\\042").replace(/\\/g, "\\134") + "\")"
d[b] = (b in d ? d[b] + "/" : "") + c
}
// 整形
for (var t in d) o.push(t + " /" + d[t] + "/")
// 出力
with (F.CreateTextFile(outfile, true, true)) {
Write(o.join("\r\n"))
Close()
}
}
ime2skk("nicoime_atok.txt", "skk-nico.txt")