「説明を出力」の版間の差分
ナビゲーションに移動
検索に移動
改行を修正 |
flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加 |
||
| 7行目: | 7行目: | ||
= 更新履歴 = | = 更新履歴 = | ||
2015/08/16 flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加 | |||
2015/08/16 JSONのパースをreturnではなくeval()で行うよう変更<br> | 2015/08/16 JSONのパースをreturnではなくeval()で行うよう変更<br> | ||
2015/08/16 作成 | 2015/08/16 作成 | ||
| 16行目: | 17行目: | ||
// 定義ファイルのパス | // 定義ファイルのパス | ||
var libPath = "help.json"; | var libPath = "help.json"; | ||
// 説明の出力形式 | |||
// trueだと説明の前にヒットした正規表現を表示する | |||
var descCfg = true; | |||
// それぞれの出力の間に空白行を入れるか | |||
var addLine = true; | |||
var fso = new ActiveXObject( | var fso = new ActiveXObject("Scripting.FileSystemObject"); | ||
// 相対パス修正 | // 相対パス修正 | ||
if (libPath.indexOf( | if (libPath.indexOf(":") <= 0) { | ||
libPath = fso.BuildPath(fso.GetParentFolderName(Document.FullName), libPath); | libPath = fso.BuildPath(fso.GetParentFolderName(Document.FullName), libPath); | ||
} | } | ||
| 34行目: | 40行目: | ||
var selectText = document.selection.Text; | var selectText = document.selection.Text; | ||
var outputText = ""; | var outputText = ""; | ||
var outputTitle = ""; | |||
for(var i = 0; i < fileJson.length; i++) { | for(var i = 0; i < fileJson.length; i++) { | ||
regexp = new RegExp(fileJson[i].text, fileJson[i].flags) | if(!fileJson[i].flags) { | ||
regexp = new RegExp(fileJson[i].text, fileJson[i].flags) | |||
} else { | |||
regexp = new RegExp(fileJson[i].text) | |||
} | |||
if(regexp.exec(selectText)) { | if(regexp.exec(selectText)) { | ||
outputText = fileJson[i].description; | outputText = fileJson[i].description; | ||
outputTitle = fileJson[i].text; | |||
} | } | ||
} | } | ||
| 44行目: | 56行目: | ||
// 出力 | // 出力 | ||
if(selectText !== "" && outputbar.visible && outputText !== "") { | if(selectText !== "" && outputbar.visible && outputText !== "") { | ||
outputbar.Writeln(outputText); | if(descCfg) { | ||
outputbar.Writeln(outputTitle + " : " + outputText); | |||
} else { | |||
outputbar.Writeln(outputText); | |||
} | |||
if(addLine) { | |||
outputbar.Writeln(""); | |||
} | |||
} | } | ||
2015年8月16日 (日) 20:53時点における版
概要
マッチした文字列が選択されたら、アウトプットバーに説明を出力します
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します
定義ファイルはSJISで保存してください
「選択範囲が変更されたとき」のイベントで実行することを前提に作成しています
定義ファイルの書き方はjsonで例を下に載せてあります
更新履歴
2015/08/16 flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加
2015/08/16 JSONのパースをreturnではなくeval()で行うよう変更
2015/08/16 作成
コード
#title = "ヘルプをアウトプットバーに出力"
// 定義ファイルのパス
var libPath = "help.json";
// 説明の出力形式
// trueだと説明の前にヒットした正規表現を表示する
var descCfg = true;
// それぞれの出力の間に空白行を入れるか
var addLine = true;
var fso = new ActiveXObject("Scripting.FileSystemObject");
// 相対パス修正
if (libPath.indexOf(":") <= 0) {
libPath = fso.BuildPath(fso.GetParentFolderName(Document.FullName), libPath);
}
// 読み込み
if(fso.FileExists(libPath)) {
var fsIn = fso.OpenTextFile(libPath, 1, false, -2);
var fileJsonText = fsIn.ReadAll();
var fileJson = JsonParse(fileJsonText);
fsIn.Close();
// 定義ファイル内検索
var selectText = document.selection.Text;
var outputText = "";
var outputTitle = "";
for(var i = 0; i < fileJson.length; i++) {
if(!fileJson[i].flags) {
regexp = new RegExp(fileJson[i].text, fileJson[i].flags)
} else {
regexp = new RegExp(fileJson[i].text)
}
if(regexp.exec(selectText)) {
outputText = fileJson[i].description;
outputTitle = fileJson[i].text;
}
}
}
// 出力
if(selectText !== "" && outputbar.visible && outputText !== "") {
if(descCfg) {
outputbar.Writeln(outputTitle + " : " + outputText);
} else {
outputbar.Writeln(outputText);
}
if(addLine) {
outputbar.Writeln("");
}
}
// Libs
// JSONText To JSONObj
function JsonParse(f){
return eval(f);
}
定義ファイル例
[
{
"text": "正規表現",
"flags": "正規表現のフラグ",
"description": "出力する説明"
},
{
"text": "正規表現",
"flags": "正規表現のフラグ",
"description": "出力する説明"
}
]
定義ファイル
スポンサーリンク