/* SKK辞書からカタカナ語のみを抽出し辞書を作成する。 【使用法】 1. おもむろにSKKFEPをインストールする (またはskkdict.txtの名前で辞書をカレントに置く) 2. 本スクリプトを実行するとカレントディレクトリにファイルが生成される 3. 生成されたskk-kana.txtを辞書フォルダへ */ F = new ActiveXObject("Scripting.FileSystemObject") /// SKK辞書からカタカナ語辞書を構築 function create_kana(dict, kana) { // 文字コードを変換し行単位に分割 var a with (new ActiveXObject("ADODB.Stream")) { Type = 2 Charset = "iso-8859-1" Open() LoadFromFile(dict) var t = ReadText(2) Close() Charset = t == "\xFF\xFE" ? "utf-16" : "_autodetect" Open() LoadFromFile(dict) a = ReadText(-1).split(/\r|\n|\r\n/) Close() } // カタカナ語を抽出 var d = {} for (var l in a) { if (a[l].charAt(0) == ";") continue var z = a[l].split("/") // concat?こまけぇこたぁいいんだよ outer: for (var n = 1; n < z.length - 1; n++) { var s = z[n] if (s.indexOf("?") >= 0) continue // 出力結果に「自信」を持たせる var x = s.split(";")[0] if (x.length < 2) continue var t = "" for (var i = 0; i < x.length; i++) { var c = x.charAt(i) if (c < "ァ" || "ー" < c) continue outer if (c <= "ン") c = String.fromCharCode(c.charCodeAt(0) - 0x60) else if (c == "ヴ") c = "う゛" t += c } if (x == t) continue if (!(t in d) || d[t].length < s.length) d[t] = s // 確定変換用に単独候補化 } } // 整形してソート a = [] for (var t in d) a.push(t + " /" + d[t] + "/") a.sort() // SJISで出力 with (F.CreateTextFile(kana, true)) { WriteLine(a.join("\r\n")) Close() } } B = "C:\\Windows\\IME\\SKK0\\DICTS\\" L = [ B + "skk-dict.txt", B + "SKK-JISYO.L", "skk-dict.txt" ] for (i in L) if (F.FileExists(L[i])) create_kana(L[i], "skk-kana.txt")