/*
ニコニコ大百科IME辞書
http://tkido.com/blog/1019.html
を、SKK辞書に変換する。
【使用法】
1. 辞書をダウンロードして解凍
2. 辞書ファイルと同じ場所に本スクリプトを置いて実行
3. 生成されたskkdict_nicoime.txtを辞書フォルダへ
ひらがなを確定なしで直接入力するSKKの仕様上、変換前後の文字が完全に一致している候補は
標準ではコメントアウトします。候補に含めたい場合は最後の引数を真に変更してください。
最後のファイル名部分を書き換えることで他の辞書の変換にも利用できます。
*/
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 = []
for (var l in a) {
if (a[l].charAt(0) == "!") {
o.push(";" + a[l])
continue
}
var z = a[l].split("\t"), b = z[0], c = z[1]
if (b.length == 0 || c.length == 0) {
continue
}
if (b == c && !hiragana) {
b = ";" + b
}
if (c.charAt(0) == "[" || c.charAt(0) == "]" || c.indexOf("/") >= 0 || c.indexOf(";") >= 0) {
c.replace(/\"/g, "\\042")
c.replace(/\\/g, "\\134")
c = "(concat \"" + c + "\")"
}
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()
}
}
// 直接変換する場合は管理者権限が必要なので注意
// B = "C:\\Windows\\IME\\SKK0\\DICTS\\"
B = ""
ime2skk("nicoime_atok.txt", B + "skkdict_nicoime.txt", false)