変換モジュール(JavaScript版)作成方法(.hmfjs)(Ver9.35対応版)
目次−
変換モジュール−
変換モジュール(JavaScript版)作成方法(.hmfjs)
変換モジュールをJavaScriptで書くことができます。(V9.25以降)
JavaScript版の変換モジュールは、秀丸マクロのJavaScript対応の限定的な使われ方になります。
秀丸マクロのJavaScript対応のうち、WebView2のマクロはできません。
非同期で呼ばれたような位置づけになります。そのため、非同期対応でないメソッドは使えません。
限定的である代わりに、変換系コマンドだけでなく、filter文/関数や置換でも使うことができます。
DLL同様、プログラム的に可能なことはできてしまうので、文字列の操作に限った記述にしてください。
enumHidemaruFilter関数とhidemaruFilterGetVersion関数が必須です。
拡張子.hmfjsとして保存します。
enumHidemaruFilterは、変換関数/表示名等を定義したオブジェクトの配列を返してださい。
各プロパティの意味はDLL版と同じです。
hidemaruFilterGetVersionは、バージョンを返します。
値はDLL版と同じか、小数点の数値表記でもいいです。
各変換用の関数は、DLL版と違います。
パラメータに入力の文字列、返り値に出力の文字列があるだけです。
DLL版にあるような関数に対してのパラメータの入出力はありません。
test.hmfjs |
function enumHidemaruFilter(){
return [
{
exportName: "sampleFunc1",
nameJapan: "テスト変換1(大文字)",
nameUs: "Test Filter 1(upper case)",
accel: "X",
mustLineUnit: false,
flags: 0
},
{
exportName: "sampleFunc2",
nameJapan: "テスト変換2(タグ)",
nameUs: "Test Filter 2(tag)",
accel: "Y",
mustLineUnit: false,
flags: 0
},
{
exportName: "sampleFunc3",
nameJapan: "テスト変換3(インデント)",
nameUs: "Test Filter 3(indent)",
accel: "Z",
mustLineUnit: true,
flags: 0x01
},
];
}
function hidemaruFilterGetVersion() {
return 1.23;
}
function sampleFunc1(strIn) {
return strIn.toUpperCase();
}
function sampleFunc2(strIn) {
return "<tag>"+strIn+"</tag>";
}
function sampleFunc3(strIn) {
return strIn.replace(/^/gm, "\t" ).slice(0,-1);
}
|
test2.hmfjs |
function enumHidemaruFilter(){
return [
{
exportName: "cmdFilter",
nameJapan: "コマンドラインフィルタ",
nameUs: "command line filter",
accel: "M",
mustLineUnit: true,
flags: 0
},
];
}
function hidemaruFilterGetVersion() {
return (1<<16)+(0*10)+0;
}
function cmdFilter(strIn) {
var exe=hidemaru.runProcess("sort.exe","","stdio","sjis");
exe.stdIn.write(strIn);
exe.stdIn.close();
return exe.stdOut.readAll(5000);
}
|