/* SKKのL辞書の数値変換エントリのうち#0が必要なもの(変換する必要があるもの)を抽出 【使用法】 1. おもむろにSKKFEPをインストールし、辞書を最新の状態にアップデートしておく (またはskk-dict.txtの名前で単語を抽出したい辞書をカレントに置いておく) 2. 本スクリプトを実行するとカレントディレクトリにファイルが生成される 3. 生成されたskk-0number.txtを辞書フォルダへ */ F = new ActiveXObject("Scripting.FileSystemObject") /// SKKのL辞書の数値変換エントリの改質 function create_number0(dict, filename) { function to_zero(s) { var a = "%(),−./:cmkgFKGDMPSXR".split(""), b = "%(),-./:cmkgFKGDMPSXR".split(""), i for (i in a) s = s.split(a[i]).join(b[i]) return s.replace(/#1/g, "#0") } var a, l, t, i, n, w, c, d = [] // 入力 with (new ActiveXObject("ADODB.Stream")) { Charset = "iso-8859-1" Open() LoadFromFile(dict) t = ReadText(2) Close() Charset = t == "\xFF\xFE" ? "utf-16" : "_autodetect" Open() LoadFromFile(dict) a = ReadText(-1).split(/\r|\n|\r\n/) Close() } // 抽出 for (l in a) { l = a[l] if (l.charAt(0) == ";") continue if (l.indexOf("#1") < 0) continue if (l.indexOf("#0") + 1) continue if (/#[、。:ー].*\s/.test(l)) continue // 改質 n = l.indexOf(" ") if (n < 0) continue i = l.substring(0, n) w = l.substring(n).split("/") c = "" for (t in w) if (/#1/.test(t = w[t]) && t != "#1、#1" && i.toLowerCase() != (n = to_zero(t)).replace(/#0/g, "#").toLowerCase()) c += "/" + n if (c) d.push(i + " " + c + "/") } // 出力 with (F.CreateTextFile(filename, 1)) { WriteLine(d.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) !F.FileExists(i = L[i]) || create_number0(i, "skk-0number.txt")