// UpdateConfig.tjs - Config.tjs を引き継ぐためのスクリプト // Copyright (C)2001-2003, W.Dee 改変・配布は自由です // Config.~new ファイルは新しい Config.tjs ファイル。 // Config.tjs ファイル中のバージョン情報と KAG のバージョン情報が // 一致しない場合にこのスクリプトファイルが呼ばれる。 if(Storages.isExistentStorage("Config.~new")) { // Config.~new ファイルがあった // Config.tjs を読み込む var settings = %[]; // 設定情報を格納する辞書配列 var oldconfig = [].load("Config.tjs"); //Config.tjs を読み込む var pattern = /^;\s*(.*?)\s*=(.*)$/; // 設定行を認識するための正規表現パターン var pattern_adds = /^\/\/\[start-(.*?)-additionals\]$/; for(var i = 0; i < oldconfig.count; i++) { var matched = pattern.match(oldconfig[i]); if(matched.count) settings[matched[1]] = matched[2]; matched = pattern_adds.match(oldconfig[i]); if(matched.count) { var end_mark = "//[end-" + matched[1] + "-additionals]"; i++; var content = ''; while(oldconfig[i] != end_mark && i < oldconfig.count) { content += oldconfig[i] + "\n"; i++; } settings["additional" + matched[1]] = content; } } // バージョン情報の書き込み settings['global.config_version'] = " \"" + kagVersion + "\"; // この行を消さないでください"; // Config.~new の読み込みと設定の引継ぎ var newconfig = [].load("Config.~new"); // Config.~new を読み込み var lines = ''; for(var i = 0; i < newconfig.count; i++) { var matched = pattern.match(newconfig[i]); var matched_adds = pattern_adds.match(newconfig[i]); if(matched.count) { var setting_name = matched[1]; var setting = settings[setting_name]; if(setting !== void) lines += ";" + setting_name + " =" + setting + "\n"; else lines += newconfig[i] + "\n"; } else if(matched_adds.count) { var setting_name = "additional" + matched_adds[1]; var end_mark = "//[end-" + matched_adds[1] + "-additionals]"; var setting = settings[setting_name]; if(setting !== void) { lines += "//[start-" + matched_adds[1] + "-additionals]\n" + setting + end_mark + "\n"; i++; while(newconfig[i] != end_mark && i < newconfig.count) i++; } else { lines += newconfig[i] + "\n"; } } else { lines += newconfig[i] + "\n"; } } // Pad の表示 global.configPad = new Pad(); global.configPad.text = lines; global.configPad.color = 0; global.configPad.title = "Config.tjs"; global.configPad.fileName = Storages.getLocalName(Storages.getPlacedPath("Config.tjs")); global.configPad.visible = true; // 通知 System.inform("設定内容を古い Config.tjs から引き継ぎました。\n" "“Config.tjs”ウィンドウ上に表示されている内容でよければ、同ウィンドウ上で\n" "右クリックをして「保存」を選択し、Config.tjs を保存してください。\n" "Config.~new ファイルは削除してかまいません。"); // 新しい config の読み込み直し Scripts.exec(lines); }