Meryマクロ「SHIORI Helper」

公開:2018年4月14日 最終更新:2018年4月30日

SHIORIイベントに対する解説テキストをアウトプットバーに表示するマクロです。

Mery wiki掲載の「説明を出力.js」を改変しました。

ダウンロード

Download(ZIP 64KB)

    ファイル構成
  • SHIORI_Helper.js:本体スクリプト
  • 定義ファイル(3種)
    • shiori_event.json:SSP標準のSHIORIイベントID
    • shiori_event_ex.json:SSP用プラグイン・ゴーストのイベントID
    • satori.json:栞「里々」関係の独自イベントID
  • includeライブラリ 20160524更新版

導入手順

動作確認:Windows10 / 32bit版 Mery ver2.6.7

マクロを登録する

01.zipファイルを解凍してできる「Macros」フォルダをMery実行ファイルと同じ階層に配置。
手順1
02. Meryを起動し、メニューバー>[マクロ]>[カスタマイズ]をクリック
手順1
03. [追加](ボタン)をクリック
手順1
04. 「SHIORI_Helper.js」を選択し、[開く](ボタン)をクリック
文字列を選択した状態で、マクロバー or ショートカットキーから起動

【おすすめ】イベント実行で自動起動

手順1
01. メニューバー>[マクロ]>[カスタマイズ]で設定ダイアログを表示する
手順2
02. [イベントで実行]のチェックボックスにチェックを入れる
手順3
03. [イベント](ボタン)をクリック
手順4
04. [選択範囲が変更された時]チェックボックスにチェックを入れる
必要なら、[遅延]のスライドバーを動かして起動のタイミングを調節する
手順5
05. [OK](ボタン)をクリック。
文字列を選択するだけで、自動でアウトプットバーと解説が表示される。
(参照:ページ最上部のgifアニメ)

コード

    改変部分
  • 定義JsonのファイルパスをMacrosフォルダに固定、相対パス補正
  • 表示オプション追加「アウトプットバーの自動表示」「表示時に履歴のリセット」
  • 解説の出力形式「:」から隅付き括弧に変更

改造元の「説明を出力.js」と合わせてご確認ください。

本体

#include "include/MeryInfo.js"
#title = "SHIORI_Helper"

//=====定義ファイル指定======
//サブフォルダ以下に配置する時は「"subFolder名//ファイル名.json"」
var libPath = ["shiori_event.json","shiori_event_ex.json","satori.json"];

//=====表示オプション======
//アウトプットバーを自動表示するか
var barAuto = true;

// 表示履歴を残すか(falseでアウトプットバーには常に1件のみ表示)
var noClear = false;

// 「履歴を残す」がtrueの時、それぞれの説明の間に空白行を入れるか
var addLine = true;

// 説明の出力形式(trueで説明の前に【イベント名】を表示)
var descCfg = true;

//=====オプションここまで======
// 以下本体の処理

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

//マクロフォルダの相対パス修正
var macroPath= MeryInfo.GetMacroFolderPath();
for(var i = 0; i < libPath.length; i++) {
	if (libPath[i].indexOf(":") <= 0) {
		libPath[i] = macroPath+"\\" + 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 = JSON.parse(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 !== "" && outputText !== "") {
	if (!OutputBar.Visible && barAuto){ //アウトプットバー自動表示
		OutputBar.Visible = true;
		editor.ExecuteCommandByID(2189); //エディタにフォーカスを戻す
		}
	if(!noClear) { //アウトプットバー内のテキストリセット
		OutputBar.Clear();
		}
	if(descCfg) { //タイトルとテキスト表示
		OutputBar.Writeln("【" + outputTitle + "】" + outputText);
	} else {
			OutputBar.Writeln(outputText);
			}
	if(noClear && addLine) { // 空白行挿入
		OutputBar.Writeln("");
		}
}
				

定義ファイル

項目と解説文は自由に編集ができます。

定義ファイルを新規作成する場合は、シフトJIS形式で保存し本体スクリプトの「定義ファイル指定」にファイル名を書き足してください。

[
	{
		"title": "イベント名。↓のキーワードとは別の文字列を表示する際に使用。省略可",
		"text": "対象キーワード(正規表現可)",
		"flags": "正規表現のフラグ(i:大文字小文字を区別しない)。省略可",
		"description": "キーワードに対する解説(改行は\n、タブ文字は\tなど特殊記号が使える)"
	},
	{
		"text": "対象キーワード",
		"description": "キーワードに対する解説"
	}
]
			

追加したい項目が多い場合は、エクセルでデータを作り、「csvjson」などでJSON形式に整形すると楽です。

参考リンク