jsで変換モジュール作った際に、filterかNo.11603
こみやんま さん 24/03/20 14:40
 
変換モジュール作成する意味が現在ではほとんど皆無なので
あまり調べてなかったんですが、

jsで変換モジュールを作成し、それをfilterから呼べるといった記載がありますが、
ずっと呼べてなかったのではないか? といった疑いあり。

- test4.hmfjs ------------------
function enumHidemaruFilter(){
  return [
    {
      exportName: "sampleFunc1",
      nameJapan: "テスト変換1(大文字)",
      nameUs: "Test Filter 1(upper case)",
      accel: "X",
      mustLineUnit: false,
      flags: 0
    }
  ];  
}

function hidemaruFilterGetVersion() {
  return 1.23;
}

function sampleFunc1(strIn) {
  //テスト変換1(大文字)
  return strIn.toUpperCase();
}
-------------------------------


-aaa.mac------------------------------
js {
    debuginfo(2);
    var filter_algorithm = hidemarudir + "\\test4.hmfjs";
    var text = filter(filter_algorithm, "sampleFunc1", "", "abc");
    var result_18 = getresultex(18); // モジュール読めた?
    var result_19 = getresultex(19); // 関数あった?
    console.log(text);
    console.log(result_18); // ここは0が返ってきてるからモジュール自体は読み
込めてると思われる
    console.log(result_19); // ここで関数が呼べなかった旨の1が返ってきてるよ
うな?
}

普段この仕組みを利用してないから勘違いしてる可能性はあり。
-------------------------------


まぁ、こういう呼び出し方するの? と言われたら、
jsだったら

execjs(hidemarudir + "\\test4.hmfjs");
js {
     var text = sampleFunc1("abc");
}

このように記述した方がわかりやすい。
といった感じではあるかとは思うんですが。

[ ]
RE:11603 jsで変換モジュール作った際に、No.11604
こみやんま さん 24/03/20 19:12
 
これはひどい、hidemarudir() を hidemarudir にしてしまっていましたw

(となると逆に) getresultex(18)が0なのはあってるのかな?

[ ]
RE:11604 jsで変換モジュール作った際に、No.11607
秀丸担当 さん 24/03/21 11:43
 
jsで括弧の付け忘れで通ってしまうのは見つけにくいです。

hmfjsの指定で、失敗時にgetresultex(18)が0になってしまうのは確かにおかしかっ
たです。
失敗時は1となるように修正させていただきます。

[ ]