「説明を出力」の版間の差分
ナビゲーションに移動
検索に移動
改行を修正 |
変数にvarの宣言を追加、オブジェクト名の修正(マクロリファレンス:3:OutputBar オブジェクトを参照) |
||
| (2人の利用者による、間の12版が非表示) | |||
| 1行目: | 1行目: | ||
= 概要 = | == 概要 == | ||
マッチした文字列が選択されたら、アウトプットバーに説明を出力します。 | |||
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します。 | |||
= | 定義ファイルはSJISで保存してください。 | ||
< | |||
「選択範囲が変更されたとき」のイベントで実行することを前提に作成しています。 | |||
定義ファイルの書き方はjsonで例を下に載せてあります。 | |||
== 変更履歴 == | |||
* 1.0.3 (2015-08-16) | |||
** 複数の定義ファイルの読み込みに対応、titleプロパティを追加可能に | |||
* 1.0.2 (2015-08-16) | |||
** flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加 | |||
* 1.0.1 (2015-08-16) | |||
** JSONのパースをreturnではなくeval()で行うよう変更 | |||
* 1.0.0 (2015-08-16) | |||
** 作成 | |||
== ソースコード == | |||
<syntaxhighlight lang="javascript" copy> | |||
#title = "ヘルプをアウトプットバーに出力" | #title = "ヘルプをアウトプットバーに出力" | ||
// 定義ファイルのパス | // 定義ファイルのパス | ||
var libPath = "help.json"; | var libPath = ["help.json"]; | ||
// 説明の出力形式 | // 説明の出力形式 | ||
// trueだと説明の前にヒットした正規表現を表示する | // trueだと説明の前にヒットした正規表現を表示する | ||
| 26行目: | 35行目: | ||
// 相対パス修正 | // 相対パス修正 | ||
if (libPath.indexOf(":") <= 0) { | for(var i = 0; i < libPath.length; i++) { | ||
if (libPath[i].indexOf(":") <= 0) { | |||
libPath[i] = fso.BuildPath(fso.GetParentFolderName(Document.FullName), libPath[i]); | |||
} | |||
} | } | ||
// 読み込み | // 読み込み | ||
if(fso.FileExists(libPath)) { | var selectText = document.selection.Text; | ||
var outputText = ""; | |||
var outputTitle = ""; | |||
for(var i = 0; i < libPath.length; i++) { | |||
if(fso.FileExists(libPath[i])) { | |||
var fsIn = fso.OpenTextFile(libPath[i], 1, false, -2); | |||
var fileJsonText = fsIn.ReadAll(); | |||
var fileJson = JsonParse(fileJsonText); | |||
fsIn.Close(); | |||
// 定義ファイル内検索 | |||
for(var j = 0; j < fileJson.length; j++) { | |||
var regexp = new RegExp(fileJson[j].text, fileJson[j].flags) | |||
if(regexp.exec(selectText)) { | |||
outputText = fileJson[j].description; | |||
if(fileJson[j].title) { | |||
regexp = new RegExp(fileJson[ | outputTitle = fileJson[j].title; | ||
} else { | |||
outputTitle = fileJson[j].text; | |||
} | |||
} | |||
} | } | ||
} | } | ||
| 55行目: | 68行目: | ||
// 出力 | // 出力 | ||
if(selectText !== "" && | if(selectText !== "" && outputBar.visible && outputText !== "") { | ||
if(descCfg) { | if(descCfg) { | ||
outputBar.Writeln(outputTitle + " : " + outputText); | |||
} else { | } else { | ||
outputBar.Writeln(outputText); | |||
} | } | ||
if(addLine) { | if(addLine) { | ||
outputBar.Writeln(""); | |||
} | } | ||
} | } | ||
| 71行目: | 84行目: | ||
return eval(f); | return eval(f); | ||
} | } | ||
</ | </syntaxhighlight> | ||
== 定義ファイル例 == | |||
flagsは省略可能です。 | |||
titleを書くと正規表現と違うタイトルを説明に表示できます。 | |||
< | <syntaxhighlight lang="javascript" copy> | ||
[ | [ | ||
{ | { | ||
"title": "説明のタイトル", | |||
"text": "正規表現", | "text": "正規表現", | ||
"flags": "正規表現のフラグ", | "flags": "正規表現のフラグ", | ||
| 83行目: | 100行目: | ||
{ | { | ||
"text": "正規表現", | "text": "正規表現", | ||
"description": "出力する説明" | "description": "出力する説明" | ||
} | } | ||
] | ] | ||
</ | </syntaxhighlight> | ||
= 定義ファイル = | == 定義ファイル == | ||
[[説明を出力/定義ファイル | [[説明を出力/定義ファイル]] | ||
2025年11月25日 (火) 19:36時点における最新版
概要[編集]
マッチした文字列が選択されたら、アウトプットバーに説明を出力します。
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します。
定義ファイルはSJISで保存してください。
「選択範囲が変更されたとき」のイベントで実行することを前提に作成しています。
定義ファイルの書き方はjsonで例を下に載せてあります。
変更履歴[編集]
- 1.0.3 (2015-08-16)
- 複数の定義ファイルの読み込みに対応、titleプロパティを追加可能に
- 1.0.2 (2015-08-16)
- flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加
- 1.0.1 (2015-08-16)
- JSONのパースをreturnではなくeval()で行うよう変更
- 1.0.0 (2015-08-16)
- 作成
ソースコード[編集]
#title = "ヘルプをアウトプットバーに出力"
// 定義ファイルのパス
var libPath = ["help.json"];
// 説明の出力形式
// trueだと説明の前にヒットした正規表現を表示する
var descCfg = true;
// それぞれの出力の間に空白行を入れるか
var addLine = true;
var fso = new ActiveXObject("Scripting.FileSystemObject");
// 相対パス修正
for(var i = 0; i < libPath.length; i++) {
if (libPath[i].indexOf(":") <= 0) {
libPath[i] = fso.BuildPath(fso.GetParentFolderName(Document.FullName), libPath[i]);
}
}
// 読み込み
var selectText = document.selection.Text;
var outputText = "";
var outputTitle = "";
for(var i = 0; i < libPath.length; i++) {
if(fso.FileExists(libPath[i])) {
var fsIn = fso.OpenTextFile(libPath[i], 1, false, -2);
var fileJsonText = fsIn.ReadAll();
var fileJson = JsonParse(fileJsonText);
fsIn.Close();
// 定義ファイル内検索
for(var j = 0; j < fileJson.length; j++) {
var regexp = new RegExp(fileJson[j].text, fileJson[j].flags)
if(regexp.exec(selectText)) {
outputText = fileJson[j].description;
if(fileJson[j].title) {
outputTitle = fileJson[j].title;
} else {
outputTitle = fileJson[j].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);
}
定義ファイル例[編集]
flagsは省略可能です。
titleを書くと正規表現と違うタイトルを説明に表示できます。
[
{
"title": "説明のタイトル",
"text": "正規表現",
"flags": "正規表現のフラグ",
"description": "出力する説明"
},
{
"text": "正規表現",
"description": "出力する説明"
}
]
定義ファイル[編集]
スポンサーリンク