Extension:VariablesExtension/ja

Variables はとても単純な MediaWiki 機能拡張であり、ページ上で変数を定義し、同一ページ上で後で参照したり、値を変更したり（その際に古い値による式で与えられる値も可能）、等が可能になります.

これはテンプレートととてもよく似ていますが、負荷がとても軽い上に、スコープが単独のページに限られるため、Wiki を大量のテンプレートで汚染することなくページ上で多数の変数を使用することができます. ParserFunction 機能拡張と連携することで最も有用な結果を得ることができます.

この極めてシンプルな機能拡張は Rob Adams により作成され、パブリックドメインで公開されました. MediaWiki バージョン 1.8 への移植は Hempel が行いました. MediaWiki バージョン 1.10 への移植は Rob Adams が行いました. により されました. #vardefineecho の機能追加は Xiloynaha により、#varexists および #var への初期値オプションの機能追加は Danwe により行われました.

#vardefine


値 指定値 を、（既存またはここで初めて記述された）変数 変数名 に割り当てます.

#vardefineecho


#vardefine と全く同じ動作ですが、値を出力します.

Retrieving the value of a variable (#var)
The value of the variable variablename is produced by

If undefined, this produces the empty string; it does not give an error message.

It's possible to define a value for the case that the variable is undefined or void:

This is equivalent to:

but it's much shorter and better arranged.

The value can be used in parser functions, etc.

#varexists

 * returns 1 if the variable is already defined (also when the value is a void string). If the variable is not defined the return value is void.

Examples

 * Note that the ParserFunctions extension must also be installed to use #expr

Compute 2*a + b:

Add one to n:

変数と条件式パーサ関数
このセクションは MediaWiki バージョン 1.12 以降にのみ適用されます.

ParserFunctions
It must be noted that everything in conditional parser functions such as #ifexpr gets executed (though only one result gets displayed), regardless of the condition, see Help:Extension:ParserFunctions. This applies also to #vardefine. Thus:

first assigns b and then c (hence effectively just c) regardless of the condition, while

assigns only the applicable value.

Similarly

assigns b regardless of the condition, while

conditionally assigns value b to variable a (a dummy assignment of the value of a to a is done if the condition is not fulfilled).

Control Structure Functions
Another way around the aforementioned limitation is to use the Control Structure Functions extension, which allows one to delay the parsing of wiki markup through the use of character escape sequences. So, the first above example becomes this:

Alternatively, the Character Escapes extension can be used to automate the escape sequences:

The Control Structure Functions extension also has loop functions that support character escape sequences. The wiki markup:

produces the following:


 * 0
 * 1
 * 2

Variables.php
Copy this into a file called $IP/extensions/Variables/Variables.php:

Variables.i18n.php
Copy this into a file called $IP/extensions/Variables/Variables.i18n.php:

LocalSettings.php
Then add to the end of LocalSettings.php.