説明を出力

提供: MeryWiki
移動先: 案内検索

概要[編集]

マッチした文字列が選択されたら、アウトプットバーに説明を出力します
既定ではこのマクロと同じディレクトリの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": "出力する説明"
  }
]

定義ファイル[編集]

こちら