「説明を出力」の版間の差分
ナビゲーションに移動
検索に移動
<source>タグを<syntaxhighlight>タグに置き換える |
セクションの修正 |
||
| 1行目: | 1行目: | ||
= 概要 = | == 概要 == | ||
マッチした文字列が選択されたら、アウトプットバーに説明を出力します<br> | マッチした文字列が選択されたら、アウトプットバーに説明を出力します<br> | ||
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します<br> | 既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します<br> | ||
| 6行目: | 6行目: | ||
定義ファイルの書き方はjsonで例を下に載せてあります<br> | 定義ファイルの書き方はjsonで例を下に載せてあります<br> | ||
= 更新履歴 = | == 更新履歴 == | ||
2015/08/16 複数の定義ファイルの読み込みに対応、titleプロパティを追加可能に<br> | 2015/08/16 複数の定義ファイルの読み込みに対応、titleプロパティを追加可能に<br> | ||
2015/08/16 flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加<br> | 2015/08/16 flagsプロパティを省略可能に、説明の出力形式・出力の間に空白行を入れるかどうかのオプションを追加<br> | ||
| 12行目: | 12行目: | ||
2015/08/16 作成 | 2015/08/16 作成 | ||
= コード = | == コード == | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
#title = "ヘルプをアウトプットバーに出力" | #title = "ヘルプをアウトプットバーに出力" | ||
| 78行目: | 78行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= 定義ファイル例 = | == 定義ファイル例 == | ||
flagsは省略可能です<br> | flagsは省略可能です<br> | ||
titleを書くと正規表現と違うタイトルを説明に表示できます | titleを書くと正規表現と違うタイトルを説明に表示できます | ||
| 96行目: | 96行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= 定義ファイル = | == 定義ファイル == | ||
[[説明を出力/定義ファイル|こちら]] | [[説明を出力/定義ファイル|こちら]] | ||
2023年5月17日 (水) 00:56時点における版
概要
マッチした文字列が選択されたら、アウトプットバーに説明を出力します
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します
定義ファイルはSJISで保存してください
「選択範囲が変更されたとき」のイベントで実行することを前提に作成しています
定義ファイルの書き方はjsonで例を下に載せてあります
更新履歴
2015/08/16 複数の定義ファイルの読み込みに対応、titleプロパティを追加可能に
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");
// 相対パス修正
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++) {
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": "出力する説明"
}
]
定義ファイル
スポンサーリンク