Manual:Parser functions/ja

パーサ関数
タグエクステンションはテキストを処理せずにHTMLを返すことが期待されます. パーサの残りとの統合は事実上存在しません; 例えばエクステンションの出力はテンプレートパラメータとして使用されます. エクステンションタグの範囲内でテンプレートを拡張することは可能ですが、多くは手作業で行われます -- バージョンからバージョンまで変更する間違いが起こりやすいプロセスだからです.

1.7以降で利用可能なパーサ機能はテンプレートと他のパーサ機能をより密接に統合する方法を提供します. 1.6で未開発のパーサ機能が存在しますが、使うことはお勧めしません. APIと構文に違いがあるからです.


 * ParserFunctionsのように提案されたモデレーションと1.6.8で十分に動作するようです.

パーサ関数の典型的な構文は以下の通りです:

パーサ関数の作成はタグフックを作成するよりも少し込み入っています. 関数名がマジックワードでなければならないからです. マジックワードは一種のキーワードでエイリアスとローカライゼーションをサポートします. 下記のコードはパーサ関数を作成するエクステンションの例です.

エクステンションによって有効になります.

*

出力です


 * param1 is hello and param2 is hi

タグエクステンションと同様に、$parser->disableCacheはダイナミックなエクステンションのためのキャッシュを無効にするために使用されます.

パーサ関数を使用してwikitextの出力の代わりに解析されていないHTML出力をリターンするために、次のコードを使用します:

return array($output, 'noparse' => true, 'isHTML' => true);

includes/Parser.phpでのコードにあるコメントからコピーされたsetFunctionHookのためのドキュメントです:

function setFunctionHook( $id, $callback, $flags = 0 )

パラメータ:


 * string $id - マジックワードのID
 * mixed $callback - 使用するコールバック関数(とオブジェクト)
 * integer $flags - オプションとして、"#"無しで関数を呼び出すSFH_NO_HASH定数を設定します.

返値: この名前のための古いコールバック関数

関数を作成します. 例えば です. コールバック関数は次のフォームを持つことになります:

コールバックは要素0にあるテキストを伴う配列、他の要素でのフラッグの数、関数のテキストの結果を返します. フラッグの名前はキーで指定されます. 妥当なフラッグは以下の通りです:


 * found : 返されたテキストは妥当でテンプレートの処理を停止します. デフォルトではonです.
 * nowiki : 返値のwikiマークアップがエスケープされます
 * noparse : 安全ではないHTMLタグはストリップなどされません.
 * noargs : 返値にある三重波括弧の引数を置き換えしない
 * isHTML : 返されたテキストはHTML、wikitextの変形に対して保護します

ParserFunctionsエクステンションはパーサ関数のよく知られたコレクションです.

ネーミング
ハッシュ文字無しで名前を選択するとき(数字、記号、"#")、コロンの後に続く関数名で始まる名前を持つページのトランスクルージョンはもはや不可能であることに注意して下さい. とりわけ、関数名と名前空間の名前が同じにならないようにして下さい. この場合、interwikiトランスクルージョン が有効になりますが、こちらも関数名とinterwikiの接頭辞が同じにならないようにして下さい.