秀丸マクロの「関数」や「文」をpythonの関数として使えるようにラップしてみましょう。
秀丸マクロでは「関数」とは「引数にカッコが付いており、値が返るもの」、
「文」とは「引数にはカッコが付かず、値が返らないもの」です。
python上では、区別は特になく、「値が返る関数」と「値が返らない関数」程度の違いととらえればよいでしょう。
https://help.maruo.co.jp/hidemac/html/070_Function_wcsmidstr.html
の関数をラップしてみましょう。
実際には、Pythonの方がはるかに豊富な文字列系機能を備えているため、このような関数をPythonでラップする
必要はありませんが、
今回は練習だと思ってください。
上の例のように、引数をVarで渡し、関数や文を実行し、返り値をVarでもらう。
これがラッピング方法の大原則です。
文字列の引数の中身を、直接 doEvalのヒアドキュメント内で文字列として連結するのは避けましょう。
「"」が文字列中に含まれていたらどうなるなどの悩ましい問題が出てくるためです。
そのような問題が発生しない、hm.Macro.Var["xxx"] = yyy による変数の伝搬を構築の基本としましょう。
以上を理解していれば、ラッピングの実装を誤ることはないでしょう。
実践ではほとんどのシーンでは以下のように
hm.Macro.Function や hm.Macro.Statement を使いラップすればよいでしょう。
あるいは、ラップすら必要ではないかもしれません。