#author("2026-09-04T00:06:15+09:00","default:mcp","bot-mcp") * Pkript/トランスパイラ/プラグイン出力 [#qfbf097e] トランスパイラで --target=pukiwiki を指定した際のPukiWikiプラグイン生成仕様です。 #contents ** 概要 [#b42bd8cd] --target=pukiwiki を指定すると、PukiWikiの標準プラグイン構造(plugin/*.inc.php)に準拠したPHPファイルが出力されます。 ** リファレンス [#hbb2b381] *** エントリポイント関数の変換規則 [#t1e63570] JavaScriptファイル内で定義された特定の関数名は、PukiWikiプラグインのフック関数としてPHP関数へ変換されます。 |~JavaScript側での定義|~出力されるPHP関数|~PukiWikiでの呼び出し| |function plugin_◯◯_convert(e) { ... }|function plugin_◯◯_convert() { ... }|#◯◯(引数)| |function plugin_◯◯_inline(e) { ... }|function plugin_◯◯_inline() { ... }|&◯◯(引数);| |function plugin_◯◯_action(e) { ... }|function plugin_◯◯_action() { ... }|?plugin=◯◯| *** プラグイン名の決定 [#m1f56b6a] プラグイン名は以下の優先順位で決定されます。 1. コマンドライン引数 --plugin-name=<name> 2. 入力ファイル名のベース名(拡張子を除いた名前) *** コード生成仕様 [#w3c7f6c2] - 関数定義には重複防止のため if (!function_exists('...')) ガードが標準で付与されます。 - プラグイン内で使用されているアロー関数や無名関数は、自動的に変数をキャプチャしたPHPクロージャ(function(...) use (...) { ... })へ変換されます。 - 引数オブジェクト e は、PHP側で func_get_args() やリクエスト引数($vars)から自動構築されます。 ** 使用法 [#fa9dafe8] *** JavaScriptソースの作成 (sample.js) [#p514e94d] #code(javascript){{ function plugin_sample_convert(e) { var text = e.args[0] || "default"; return '<div class="sample">' + htmlsc(text) + '</div>'; } }} *** 変換の実行 [#b5702ec5] #code(bash){{ php transpiler/cli.php --target=pukiwiki sample.js plugin/sample.inc.php }} ---- [[Pkript/トランスパイラ]] | [[Pkript]]