「説明を出力」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
jsonのハイライトを修正
MSY-07 (トーク | 投稿記録)
変数にvarの宣言を追加、オブジェクト名の修正(マクロリファレンス:3:OutputBar オブジェクトを参照)
 
(2人の利用者による、間の18版が非表示)
1行目: 1行目:
= 概要 =
== 概要 ==
マッチした文字列が選択されたら、アウトプットバーに説明を出力します
マッチした文字列が選択されたら、アウトプットバーに説明を出力します。
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します
「選択範囲が変更されたとき」のイベントで実行することを前提に作成しています
定義ファイルの書き方はjsonで例を下に載せてあります


= 更新履歴 =
既定ではこのマクロと同じディレクトリのhelp.jsonを定義ファイルとして参照します。
2015/08/16 作成


= コード =
定義ファイルはSJISで保存してください。
<source lang="javascript">
 
「選択範囲が変更されたとき」のイベントで実行することを前提に作成しています。
 
定義ファイルの書き方は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だと説明の前にヒットした正規表現を表示する
var descCfg = true;
// それぞれの出力の間に空白行を入れるか
var addLine = true;


var fso = new ActiveXObject('Scripting.FileSystemObject');
var fso = new ActiveXObject("Scripting.FileSystemObject");


// 相対パス修正
// 相対パス修正
if (libPath.indexOf(':') <= 0) {
for(var i = 0; i < libPath.length; i++) {
  libPath = fso.BuildPath(fso.GetParentFolderName(Document.FullName), libPath);
  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 fsIn = fso.OpenTextFile(libPath, 1, false, -2);
var outputText = "";
  var fileJsonText = fsIn.ReadAll();
var outputTitle = "";
  var fileJson = JsonParse(fileJsonText);
for(var i = 0; i < libPath.length; i++) {
  fsIn.Close();
  if(fso.FileExists(libPath[i])) {
    var fsIn = fso.OpenTextFile(libPath[i], 1, false, -2);
    var fileJsonText = fsIn.ReadAll();
    var fileJson = JsonParse(fileJsonText);
    fsIn.Close();


  // 定義ファイル内検索
    // 定義ファイル内検索
  var selectText = document.selection.Text;
    for(var j = 0; j < fileJson.length; j++) {
  var outputText = "";
      var regexp = new RegExp(fileJson[j].text, fileJson[j].flags)
  for(var i = 0; i < fileJson.length; i++) {
      if(regexp.exec(selectText)) {
    regexp = new RegExp(fileJson[i].text, fileJson[i].flags)
        outputText = fileJson[j].description;
    if(regexp.exec(selectText)) {
        if(fileJson[j].title) {
      outputText = fileJson[i].description;
          outputTitle = fileJson[j].title;
        } else {
          outputTitle = fileJson[j].text;
        }
      }
     }
     }
   }
   }
41行目: 68行目:


//  出力
//  出力
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("");
  }
}
}


// Libs
// Libs
// JSONText To JSONObj
// JSONText To JSONObj
function JsonParse(data){
function JsonParse(f){
   var obj = (new Function("return " + data))();
   return eval(f);
  return obj;
}
}
</source>
</syntaxhighlight>


= 定義ファイル例 =
== 定義ファイル例 ==
<source lang="javascript">
flagsは省略可能です。
 
titleを書くと正規表現と違うタイトルを説明に表示できます。
<syntaxhighlight lang="javascript" copy>
[
[
   {
   {
    "title": "説明のタイトル",
     "text": "正規表現",
     "text": "正規表現",
     "flags": "正規表現のフラグ",
     "flags": "正規表現のフラグ",
63行目: 100行目:
   {
   {
     "text": "正規表現",
     "text": "正規表現",
    "flags": "正規表現のフラグ",
     "description": "出力する説明"
     "description": "出力する説明"
   }
   }
]
]
</source>
</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": "出力する説明"
  }
]

定義ファイル[編集]

説明を出力/定義ファイル

スポンサーリンク