Top/PukiWiki/1.4/ちょっと便利に/複数行のプラグイン引数を可能に

複数行のプラグイン引数を可能に -- matsuda

プラグインで何行にもわたるような文章を処理したい場合に便利な機能です。

設定

pukiwiki-1.4.6より本体に実験的に取り込まれました。(BugTrack2/84

パッチは必要ありません。設定ファイルに以下を加えると機能します。

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0);

変更履歴

バージョンファイル変更点
v1.6-for146filemultiline_convert-16-for146.diff2005-07-03時点のCVS版向けです(by henoheno)
v1.6の(正規表現の/デリミタの表現の/処理の)整理をそこそこ行いました。
- 複数行プラグインの閉じブラケットが見つからなかった場合、自動的にテキストの末尾に追加します。
- hiroppiさんのパッチを取り込み、整理しました。
コメント:正規表現の部分はまだ整理の余地があると思います。v1.7 とした方が良かったかな。
このコードは 1.4.6_rc に追加されました(※編集に関する問題があるため、デフォルトで無効)
v1.6fileconvert_html.php.9.diff (new)
fileplugin.php.4.diff
複数行引数がヒアドキュメント形式と同じようにプラグインに渡るように修正しました。
v1.5fileconvert_html.php.8.diff (new)
fileplugin.php.4.diff (new)
PukiWiki1.4.5_1対応です。複数行引数の記述方法を変えました({{ }}スタイル)。ユーザ定義ルールの抑制は未対応です。
v1.4fileconvert_html.php.3.diff (reverted)
filefile.php.diff
fileplugin.php.2.diff (new)
引数が無い場合でもカンマによる分割をしないようにしました(修正版)。
v1.3fileconvert_html.php.4.diff (new)
filefile.php.diff
fileplugin.php.diff
引数が無い場合でもカンマによる分割をしないようにしました。
v1.2fileconvert_html.php.3.diff (new)
filefile.php.diff
fileplugin.php.diff (new)
ヒアドキュメントはカンマによる分割をしないようにしました。
v1.1fileconvert_html.php.2.diff (new)
filefile.php.diff (new)
skyさんの変更(引数指定)を取り込みました。整形済テキスト用の表記を追加しました。
v1.0fileconvert_html.php.diff初版

解説

ブロック型プラグインで複数行の引数指定が可能になります。

#name(arg){{
複数行の引数
...
}}

(arg)は省略できます。

  1. ブロック型プラグインの通常の記述#name(arg)に続いて二文字以上の{を続けます。
  2. 引数は次の行から書きます。
  3. {と同じ数の}が行頭に現れるまでが引数として扱われます。

複数行引数の行頭に}}をおきたい場合は、引数を囲む{{ }}の文字数を調整します。

#name(arg){{{
}}
}}}

ユーザ定義ルールの抑制

現在この機能は無効です(パッチv1.5~)。下記は古い仕様です。

また、PRE:を加えれば、ユーザ定義ルール(&now;など)のページ書き込み時の置換を抑制することができます。

#name<<PRE:EOF
...
...
EOF

用例

プラグインのインターフェース

この仕様は将来、おそらく修正されます。

複数行引数はplugin_xxx_convert()に最後の引数として渡されます。
(複数行引数には改行が含まれているため、通常の引数と区別できます。)

関連

過去の話題

仕様検討

別のページに分けられています。

複数行の引数が改変されてしまう: 見出しやユーザー定義ルール

複数行の引数が改変されてしまう: 現行の「書き換え」型プラグインによるもの

これが

#multi_sample_convert{{
hoge
#memo(この行は編集される事を意図していない)
fuga
}}

#memo(※何か実際のメモ ← ここに表示されるmemoプラグインを更新する)

こうなる

#multi_sample_convert{{
hoge
#memo(※何か実際のメモ ← ここに表示されるmemoプラグインを更新する)
fuga
}}

#memo(※何か実際のメモ ← ここに表示されるmemoプラグインを更新する)

開いたままのバラグラフに対し自動的に閉じパラグラフが付加される時の「開」判断について

不思議な動きを見かけたのでどなたかご確認をお願いします。pukiwiki1.4.7を使用しています。

任意のページに

//#plugin(){{

と1行書いて保存すると、自動的に

//#plugin(){{
}}

とパラグラフの「閉じ」が付加されてしまいます。コメントアウトしてあるにも関わらずです。

改善のため、/lib/file.phpの114行に以下の変更を加えてはどうでしょうか。

前:preg_match('/#[^{]*(\{\{+)\s*$/', $line, $matches)) {
後:preg_match('/^#[^{]*(\{\{+)\s*$/', $line, $matches)) {

ただ、これはプラグインが行頭に書かれる場合に限っての処置なのですが、これは

-#plugin(){{

のようにリストやテーブル内に書き込まれる想定は必要でしょうか?その場合は上記変更では対応できないのですが。

コメント


*1 逆に半端な取り込まれ方をしていない分だけクリーンなパッチでも問題ないかと・・・

添付ファイル: filemultiline_convert-16-for146.diff 2095件 [詳細] fileconvert_html.php.9.diff 2251件 [詳細] fileplugin.php.4.diff 2042件 [詳細] fileconvert_html.php.8.diff 1470件 [詳細] fileplugin.php.3.diff 1225件 [詳細] filefile.php.3.diff 1200件 [詳細] fileconvert_html.php.7.diff 1259件 [詳細] filefile.php.2.diff 1075件 [詳細] fileconvert_html.php.6.diff 644件 [詳細] fileconvert_html.php5.diff 1114件 [詳細] fileplugin.php.2.diff 1510件 [詳細] fileconvert_html.php.4.diff 1344件 [詳細] fileplugin.php.diff 1302件 [詳細] fileconvert_html.php.3.diff 1690件 [詳細] filefile.php.diff 1907件 [詳細] fileconvert_html.php.2.diff 1490件 [詳細] fileconvert_html.php.diff 1387件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-03-13 (木) 18:04:41
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.934 sec.

OSDN