Bantuan:Ungkapan bersyarat

Revisi sejak 31 Mei 2006 02.31 oleh Borgx (bicara | kontrib) (+1 {{#language:}})

ParserFunction adalah sekumpulan fungsi-fungsi logika dan kalkulasi dalam MediaWiki. ParserFunction memiliki sintaks seperti berikut:

{{#namafungsi: argumen1 | argumen2 | argumen3..}}

Sekarang ini, modul ini memiliki lima function: expr, if, ifeq, ifexpr dan switch.

if

Function ini memiliki sintaks:

{{#if: <kondisi> | perintah jika <true> | perintah jika <false> }}

atau bisa juga dilihat dalam pola if-then-else sebagai berikut:

{{#if: <kondisi> | perintah jika <then> | perintah jika <else> }}

Jika <kondisi> merupakan string kosong atau whitespace, maka hasilnya adalah <false>, sehingga perintah <false> akan dijalankan. Selain itu perintah <true> yang akan dijalankan. Perintah <false> bisa tidak diikutkan, dalam hal ini apabila kondisi menghasilkan <false> maka hasilnya adalah string kosong.

Dalam templat, function if dapat digunakan dalam sintaks berikut:

                         {{Templat|parameter=sesuatu}}  {{Templat}}          {{Templat|parameter=}}
                                      |                       |                         |
                                      |                       |                         |
                                      |                       |                         |
{{#if: {{{parameter|}}} | parameter didefinisikan | parameter tidak didefinisikan atau kosong }}

Perhatikan bahwa function if tidak mendukung tanda sama dengan untuk perbandingan seperti {{#if: 1 = 2|benar|salah}} akan menghasilkan "benar", karena string "1 = 2" tidak merupakan string kosong. Function if lebih berupa struktur "if defined". Untuk membandingkan string gunakan ifeq. Sedangkan untuk membandingkan angka, gunakan ifexpr yang merupakan bentuk singkat dari ..

Function if digunakan untuk menggantikan pemakaian "hiddenstructure" dan templat {{qif}}. Templat {{qif}} memiliki tingkat kompleksitas tinggi yang menyebabkan waktu yang lama untuk menghasilkan halaman wiki yang memakai templat tersebut.

ifeq

Function ini memiliki sintaks:

{{#ifeq: <string1> | <string2> | <string sama> | <string tidak sama> }}

switch

Function ini digunakan untuk membandingkan beberapa kondisi seperti dalam penggunaan nested if. Function ini memiliki sintaks:

{{ #switch: <nilai yang dibandingkan>
|<nilai_1> = <hasil_1>
|<nilai_2> = <hasil_2>
|...
|<nilai_n> = <hasil_n>
|<hasil_default>
}}

switch akan mencari setiap nilai sampai sebuah nilai ditemukan cocok dengan nilai yang dibandingkan dan hasil dari nilai yang cocok itu dikembalikan. Jika tidak ada nilai yang cocok dan nilai terakhir tidak memiliki tanda "sama dengan", maka nilai tersebut yang akan dikembalikan. Nilai default dapat juga didefinisikan memakai tanda "sama dengan" menggunakan #default seperti sintaks berikut:

{{ #switch: <nilai yang dibandingkan>
|<nilai_1> = <hasil_1>
|<nilai_2> = <hasil_2>
|...
|<nilai_n> = <hasil_n>
|#default = <hasil default>
}}

Untuk menghindari mengetik hasil yang sama untuk nilai yang berbeda, dapat menggunakan sintaks berikut:

{{ #switch: <nilai yang dibandingkan>
|<nilai_1> =
|<nilai_2> =
|<nilai_3> = <hasil_3>
|...
|<nilai_n> = <hasil_n>
|<hasil default>
}}

Perhatikan bahwa <nilai_1> dan <nilai_2> tidak memiliki tanda "sama dengan". Jika nilai ini yang cocok, hasil yang dikembalikan adalah <hasil_3>.

expr

Function expr digunakan untuk melakukan kalkulasi matematika. Sintaksnya sebagai berikut:

{{ #expr: ekspresi }}
operator sintaks hasil
* (perkalian) {{#expr:30*7}} 210
/ or div (pembagian) {{#expr:30/7}} 4.2857142857143
+ (penambahan) {{#expr:30+7}} 37
- (pengurangan) {{#expr:30-7}} 23
mod (modulus) {{#expr:30 mod 7}} 2
round (pembulatan) {{#expr:30/7 round 3}} 4.286
= (pembandingan) {{#expr:30=7}} 0
<> atau != (tidak sama) {{#expr:30<>7}} 1
< (lebih kecil) {{#expr:30<7}} 0
> (lebih besar) {{#expr:30>7}} 1
<= (lebih kecil/sama dengan) {{#expr:30<=7}} 0
>= (lebih besar/sama dengan) {{#expr:30>=7}} 1
and (logika dan) {{#expr:30 and 7}} 1
or (logika atau) {{#expr:30 or 7}} 1
not (logika bukan) {{#expr:30 not 7}} 0
() (pengelompokkan) {{#expr:(30+7)*7}} 259

Untuk operator logika seperti = (sama dengan), <> (tidak sama dengan) dll, hasil dari expr adalah 0 untuk "salah" (false) dan 1 untuk "benar" (true).

ifexpr

Function ini memiliki sintaks:

{{ #ifexpr: <ekspresi> | <then> | <else> }}

Jika nilai dari eskpresi menghasilkan nol, maka <else> akan dikembalikan, selain itu <then> akan dikembalikan. <ekspresi> sama dengan pemakaian pada function expr. Function ini merupakan bentuk pendek dari ..

ifexists

Function ini memiliki sintaks:

{{ #ifexists: <judul> | <judul ada> | <judul tidak ada> }}

Jika suatu halaman berjudul <judul> ada, maka perintah <judul ada> dijalankan, jika tidak maka perintah <judul tidak ada> dijalankan. Function ini mirip dengan templat exists di en.wikipedia.

language

Function ini memiliki sintaks:

{{ #language: <kode bahasa> }}

Fungsi ini akan mengembalikan nama bahasa dalam bahasa itu sendiri sesuai dengan kode bahasa yang diinput dalam parameter. Contoh:

{{#language:en}} menghasilkan English
{{#language:de}} menghasilkan Deutsch
{{#language:nl}} menghasilkan Nederlands
{{#language:zh}} menghasilkan 中文
{{#language:ja}} menghasilkan 日本語

Lihat pula