Extension:Loops

This page is a translated version of the page Extension:Loops and the translation is 100% complete.
MediaWiki manüel uzantıları
OOjs UI icon advanced-invert.svg
Loops
Sürüm durumu: kararlı
Uygulama Ayrıştırıcı işlevi
Açıklama Döngüleri gerçekleştirmek için ayrıştırıcı işlevleri sağlar
Yazar(lar)
En son sürüm 0.5.2 (2019-08-05)
MediaWiki 1.34+
PHP 5.6+
Veritabanı değişiklikleri Hayır
Lisans GNU Genel Kamu Lisansı 2.0 veya üstü
İndir
README
RELEASE-NOTES
Örnek sandbox.semantic-mediawiki.org
  • $egLoopsEnabledFunctions
  • $egLoopsCountLimit
Translatewiki.net adresinde mevcutsa, Loops uzantısını çevirin

Kullanım ve sürüm matrisini kontrol edin.

Sorunlar Açık görevler · Hata bildir

Loops uzantısı, döngüleri gerçekleştirmek için ayrıştırıcı işlevleri sağlar. Şu anda sürüm 1.0.0, çok fazla döngüye sahip sayfalar için uzantı kayıtı, izleme kategorileri ve gerilemeleri önlemek için Parser tests içeren geliştirme aşamasındadır. Aşağıdaki belgeler, en son kararlı sürüm olan v0.5.2 hedeflemektedir.

Şu anda, bu uzantı MGChecker tarafından temel düzeyde korunur.

Kullanım

Aşağıdaki örnekler Variables uzantısını ve bazı durumlarda da ParserFunctions uzantısını kullanır.

#while

{{#while}}, koşul işaretlemesi boşluk olmayan olarak değerlendirildiği sürece bir döngü gerçekleştirir (yani belirli bir viki biçimlendirme blok ifadesini tekrar tekrar ayrıştırır).

{{#while:
 | <condition text>
 | <block statement>
}}
Örnekler

Viki işaretlemesi:

{{#vardefine: i | 0 }}{{#while:
 | {{#ifexpr: {{#var: i }} < 5 | true }}
 | <nowiki />
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}

aşağıdakine üretir:

  • 0
  • 1
  • 2
  • 3
  • 4

{{#while}}, numaralandırılmış bir diziyi simüle etmek için bir şablonda da kullanılabilir. "Şablon:Döngüler Testi" sayfası şunu içeriyorsa:

{{#vardefine: i | 0 }}{{#while:
 | {{{arg{{#var: i }} |}}}
 | <nowiki />
* {{{arg{{#var: i }} }}}{{#vardefine: i
   | {{#expr: {{#var: i }} + 1 }}
 }}
}}

sonra viki biçimlendirmesi

{{Loops Test
 |arg0=zero
 |arg1=one
 |arg2=two
 |arg3=three
 |arg4=four
}}

üretir

  • zero
  • one
  • two
  • three
  • four

Yeni satırlar, sekmeler ve boşluklar dahil olmak üzere boşlukların, bu ayrıştırıcı işlevlerinin tüm bağımsız değişkenlerinin başından ve sonundan çıkarıldığını belirtmek önemlidir. Bu istenmiyorsa, boşluk olmayan karakterlerin eklenmesi (bir boşluk karakteri &#32; için HTML kodlaması dahil) daha fazla sıyrılmayı önleyecektir (dolayısıyla yukarıdaki örneklerde ‎<nowiki> etiketleri).

#dowhile

{{#dowhile}}, blok ifadesinin en az bir kez ayrıştırılması ve görüntülenmesi (görüntülenebilir metinle sonuçlanırsa) garanti edilmesi dışında, tam olarak {{#while}} gibi çalışır. Bu, koşul metni değerlendirilmeden önce yapılır.

#loop

{{#loop: <variable name>
 | <starting value>
 | <number of loops to be performed>
 | <wiki markup>
}}

{{#loop}} tekrar tekrar ayrıştırır ve <wiki markup> mutlak değerine <number of loops to be performed> eşit olarak birkaç kez görüntüler. <Starting value>, <variable name> adını kullanan bir değişkene (Variables uzantısının {{#var:}} ayrıştırıcı işleviyle erişilebilir) yerleştirilir. Her döngüden sonra, <number of loops to be performed> pozitifse değişken bir artırılır veya <number of loops to be performed> negatifse bir-bir azaltılır.

From all loop functions, #loop should have the best performance since there is no condition which has to be expanded and validated for each cycle.
Örnekler

Aşağıdaki kod:

{{#loop: varname
 | 4
 | 4
 | <nowiki />
* This is round {{#var: varname }} and we have {{#expr: 7 - {{#var: varname }} }} more to go
}}

produces

  • This is round 4 and we have 3 more to go
  • This is round 5 and we have 2 more to go
  • This is round 6 and we have 1 more to go
  • This is round 7 and we have 0 more to go

#forargs (experimental)

{{#forargs}} is to be used in templates. It takes arguments that are passed to the template and puts them in variables accessible by Variables extension's {{#var:}} parser function.

{{#forargs: <prefix>
 | <key>
 | <value>
 | <block statement>
}}

This function iterates through each argument whose name begins with <prefix>. With each iteration it puts the argument name minus <prefix> into <key> as if calling {{#vardefine: <key> }}. It then takes the value of the argument and puts it into <value> in a similar method. The block statement is then expanded. The block statement may contain {{#var: <key> }} and {{#var: <value> }} to access the stored arguments.

Example

If the page "Template:Loops Test" contains

{{#forargs: arg
 | key
 | value
 | <nowiki />
* {{#var: key }} = {{#var: value }}
}}

then the wiki markup

{{Loops Test
 | arg1=val1
 | spam=spammity
 | arg5=val5
 | argument=value
}}

produces

  • 1 = val1
  • 5 = val5
  • ument = value

#fornumargs (experimental)

{{#fornumargs: <key>
 | <value>
 | <block statement>
}}

{{#fornumargs}} performs similarly to {{#forargs}} with two major differences: It doesn't take a prefix argument, and it only works on numbered arguments whether they're explicitly numbered,

{{Template
 | 1=one
 | 2=two
}}

or implicitly numbered.

{{Template
 | one
 | two
}}

Mixing these methods in a single template call may cause values to get overwritten, so be careful.

Examples

If "Template:Loops Test" is edited to contain:

{{#fornumargs: number
 | value
 | <nowiki />
* {{#var: number }} = {{#var: value }}
}}

then

{{Loops Test
  | Apricot
  | B = Bolognese
  | Caramel slice
  | 5 = Eclair
}}

will result in

  • 1 = Apricot
  • 2 = Caramel slice
  • 5 = Eclair

Kurulum

Some of the parser functions provided by this extension require the ParserFunctions as well as the Variables extension to be installed first.

Yapılandırma

These configuration variables have to be set in the "LocalSettings.php" file after the inclusion of this extension.

ExtLoops::$maxLoops ($egLoopsCounterLimit in the forthcoming 1.0.0 release)
This parameter sets the maximum number of loops a page is allowed to perform (default 100). Setting it to -1 lets the loops run within the limits of phps environment. This parameter affects neither the {{#forargs:}} nor {{#fornumargs:}} parser functions.
$egLoopsEnabledFunctions
Configuration variable (array) to define which Loops functions should be enabled. By default, all functions are enabled if the Variables extension is installed as well. If the Variables extension is not installed, #loop, #forargs and #fornumargs will be disabled since they do not work without it being installed. To enable the #fornumargs and #forargs functions only, one can use:
$egLoopsEnabledFunctions = array_diff(
    $egLoopsEnabledFunctions, [
        'forargs', 'fornumargs'
        ]
    );

Ayrıca bakınız