Bantuan:Ungkapan bersyarat

Dari Wiki Javasatu
(Dialihkan dari Bantuan:ParserFunctions)
Loncat ke navigasi Loncat ke pencarian
Selamat datang! Halaman ini memberikan bantuan mengenai hal yang sering ditanyakan di Wikipedia. Untuk memulai, silakan mengeklik pranala yang Anda butuhkan di bawah ini, atau gunakan fitur pencari yang tersedia.

Lihat versi terbaru di (Inggris) mw:Help:ParserFunctions

ParserFunctions (fungsi-fungsi parser) adalah sekumpulan fungsi-fungsi logika dan kalkulasi dalam MediaWiki: mw:Extension:ParserFunctions. Sejak pertengahan April 2006 piranti lunak MediaWiki dengan menggunakan Sintaks-Wiki memperbolehkan digunakannya beberapa konstruksi suatu bahasa pemrograman untuk diterapkan dalam templat.

Konstruksi-konstruksi bahasa program ini seharusnya hanya digunakan secara eksklusif dalam ruang nama templat dan dipertimbangkan saat digunakan. Tidak setiap kemungkinan pemanfaatannya benar-benar berarti atau bermanfaat. Sintaks-sintaks bahasa pemrograman ini masih dapat berubah. Konstruksi pemrograman yang tidak cukup terdokumentasi, akan kembali dihapuskan.

Berbeda dengan fungsi parser biasa yang bisa tidak menggunakan tanda pagar "#", penggunaan ParserFunctions harus memakai tanda pagar di awal fungsi. ParserFunctions memiliki sintaks seperti berikut:

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

Mohon perhatikan bahwa ekstensi ini harus dipasang secara manual, dan tidak langsung terpasang ketika sebuah MediaWiki baru dipasang. Lihat Istimewa:Versi untuk mengetahui apakan ekstensi ini sudah dipasang atau belum.

Fungsi-fungsi[sunting sumber]

Sekarang ini, modul ini memiliki sepuluh fungsi yaitu: expr, if, ifeq, ifexist, ifexpr, iferror, switch, time, rel2abs, dan titleparts.

#expr:

sintaks:

Fungsi expr digunakan untuk menghitung perhitungan (ekspresi) matematika didasarkan atas permutasi dari angka-angka (atau variabel/parameter yang diterjemahkan dalam angka-angka) dan operator. Fungsi ini tidak berlaku untuk string. (gunakan ifeq untuk string). Keakuratan dan format angka berbeda-beda tergantung dari sistem operasi peladen.

Dalam perhitungan kompleks, operator dihitung dari kiri ke kanan dengan preseden tertentu:

  1. pengelompokan (tanda kurung);
  2. unary (tanda +/- dan NOT);
  3. perkalian(*, /, div, mod);
  4. penjumlahan (+, -);
  5. pembulatan;
  6. perbandingan (=, !=, <, >, dll.);
  7. logical AND;
  8. logical OR.

Jika menghitung sebagai boolean, "0" dianggap FALSE (salah) dan karakter lain selain spasi "TRUE" (benar) (TRUE di boolean dilambangkan sebagai "1").

Macam operator:

Operator Operasi Contoh Hasil
tidak ada Templat:Ft 1.2345678901234E+14
Templat:Ft 1.0E-6
Aritmatika
+ Unary tanda positif Templat:Ft 210
- Unary tanda negatif Templat:Ft 210
* Perkalian Templat:Ft 210
/
div
Pembagian Templat:Ft
Templat:Ft
4.2857142857143
4.2857142857143
+ Penjumlahan Templat:Ft 37
- Pengurangan Templat:Ft 23
Logika
not Unary NOT
logical NOT
Templat:Ft
Templat:Ft
7
7
and Logical AND

Templat:Ft

0
or Logical OR

Templat:Ft

1
Perbandingan
= Persamaan (numerical & logical) Templat:Ft 0
<>
!=
Pertidaksamaan, logical exclusive or Templat:Ft
Templat:Ft
1
1
< Kurang dari

Templat:Ft

0
> Lebih dari

Templat:Ft

1
<= Kurang dari sama dengan

Templat:Ft

0
>= Lebih dari sama dengan

Templat:Ft

1
Lain-lain
( ) Operator pengelompokan Templat:Ft 259
mod "Modulo" sisa pembagian.
Catatan: div dan mod berbeda dari semua bahasa pemrograman.
Templat:Ft
Templat:Ft
Templat:Ft
2
-2
0
round Membulatkan. Templat:Ft
Templat:Ft
Templat:Ft
Templat:Ft
4.2857
4.3
1900
-3
trunc Menghilangkan desimal. Templat:Ft
Templat:Ft
1
-1
floor Membulatkan ke intejer terdekat yang sama dengan atau lebih kecil dari angka tersebut. Templat:Ft
Templat:Ft
1
-2
ceil Membulatkan ke intejer terdekat yang sama dengan atau lebih besar dari angka tersebut. Templat:Ft
Templat:Ft
2
-1

#if:

sintaks:

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

Fungsi if bekerja seperti if-then-else (jika-maka-jika_tidak). Kondisi yang diberikan akan selalu benar kecuali dikosongkan atau hanya berisi spasi. Kode di argumen kedua akan dijalankan jika nilai fungsinya benar, dan argumen ketiga akan dijalankan jika nilai fungsinya salah (salah satu atau keduanya dapat kosong, dan kode-jika-salah dapat tidak ditulis sama sekali).

Perbandingan yang dilakukan adalah untuk teks, bukan ekspresi matematika, jadi perbandingan matematika akan selalu dianggap benar; Contoh: {{#if: 1 = 2|benar|salah}} akan menghasilkan "benar", karena string "1 = 2" tidak merupakan string kosong. Untuk membandingkan string gunakan ifeq. Sedangkan untuk membandingkan angka, gunakan ifexpr. <--- It is not possible to distinguish between an undefined parameter in a template and a blank one (it is possible with #ifexpr). -->

Fungsi 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.

Contoh:

Dalam templat, function if dapat digunakan dalam sintaks berikut:

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

#ifeq:

sintaks:

Fungsi ifeq membandingkan dua string atau angka, dan akan menghasilkan argumen ketiga jika nilai fungsinya benar, atau akan menghasilkan argumen keempat jika nilai fungsinya salah (salah satu atau keduanya dapat kosong, dan kode-jika-tak-setara dapat tidak ditulis sama sekali).

Perbandingan string ini sensitif terhadap huruf besar/huruf kecil (contoh, A != a). Jika kedua string dapat dijadikan angka, mereka akan dibandingkan secara numerikal (contoh, 01 = 1); Untuk memaksa perbadingan string, tambahkan karakter non-angka (seperti tanda kutip ") pada kedua argumen.

Isu: (belum diterjemahkan)

Contoh:

#ifexist:

sintaks:

Fungsi ifexist menghasilkan salah satu dari dua kemungkinan, tergantung dari apakah nama halaman yang dimasukkan ada atau tidak.

Contoh:

#ifexpr:

sintaks:

Fungsi ifexpr menghitung suatu operasi (ekspresi) matematika (lihat expr) dan menghasilkan salah satu dari dua kemungkinan, tergantung dari perhitungan tersebut benar atau salah.

Contoh:

Templat:Ft ya -- Karena 10 lebih besar dari 9

#switch:

sintaks:

{{#switch: <nilai yang dibandingkan>
 | <nilai>1 = <hasil>1
 | <nilai>2 = <hasil>2
 | ...
 | <nilai>n = <hasil>n
 | <hasil> default
}}

Fungsi switch membandingkan antara suatu nilai dengan banyak nilai lainnya, dan menghasilkan string (yang berada setelah tanda samadengan) jika ada yang cocok. Jika tidak ada yang cocok, maka nilai terakhir yang tidak memiliki (jika ada) tanda samadengan-lah yang akan dihasilkan. Anda dapat memberikan hasil default dengan #default:

{{#switch: <nilai yang dibandingkan>
 | <nilai> = <hasil>
 | #default = <hasil default>
}}

"switch" dapat digunakan untuk semua penggunaan #ifeq (tapi tidak sebaliknya):

Templat:Ft menghasilkan benar
Templat:Ft menghasilkan benar

#time:

sintaks:

Fungsi time adalah untuk pemformatan waktu dan tanggal (hanya untuk waktu sejak 1 Jan 1970!). Jika "waktu" tidak diberikan, fungsi ini akan memakai waktu saat artikel yang bersangkutan dikonversi ke HTML. Dikarenakan adanya cache, halaman yang memakai fungsi ini perlu untuk diperbaharui dengan purge atau null edit.

Format kode/parameter:

Kode Deskripsi Contoh keluaran Hasil
Tahun:
Y 4-digit tahun. e.g. 2006 2024
y 2-digit tahun. 00 hingga 99, e.g. 06 untuk tahun 2006. 24
Bulan:
n Bulan ke- (tanpa awalan 0). 1 hingga 12 7
m Bulan ke- (dengan awalan 0). 01 hingga 12 07
M Tiga huruf nama bulan. Jan hingga Des Jul
F Nama bulan lengkap Januari hingga Desember Juli
Minggu:
W ISO 8601 angka minggu (satu minggu dalam tahun ISO adalah dari senin hingga minggu, dan minggu ke-1 selalu memiliki tanggal 4 Januari atau hari kamis pertama pada kalender sipil), dengan awalan 0. 01 hingga 52 atau 53 27
Hari:
j Tanggal dalam sebulan (tanpa awalan 0). 1 hingga 31 1
d Tanggal dalam sebulan (dengan awalan 0). 01 hingga 31 01
z Tanggal dalam setahun (dimulai dari 0). 0 hingga 364 atau 365 182
D Tiga huruf nama hari. Sen hingga Min Sen
l Nama hari lengkap. Senin hingga Minggu Senin
N Tanggal dalam seminggu (menurut minggu ISO 8601). 1 (untuk Senin) hingga 7 (untuk Minggu) 1
Jam:
a am (dari 01:00:00 hingga 12:59:59) atau pm, dengan huruf kecil (untuk format 12-jam)). am atau pm am
A Sama dengan kode a di atas, dengan huruf besar AM atau PM AM
g Jam berformat 12-jam (tanpa awalan 0, menggunakan am/pm atau AM/PM). 1 hingga 12 10
h Jam berformat 12-jam (dengan awalan 0, menggunakan am/pm or AM/PM). 01 hingga 12 10
G Jam berformat 24-jam (tanpa awalan 0). 0 hingga 23 10
H Jam berformat 24-jam (tanpa awalan 0). 00 hingga 23 10
Menit dan detik:
i Menit (dengan awalan 0). 00 hingga 59 22
s Detik (dengan awalan 0). 00 hingga 59 49
U Detik sejak 1 Januari 1970 00:00:00 GMT. 0 hingga infiniti 1719829369
Lain-lain:
L Tahun kabisat atau bukan 1 jika tahun kabisat, 0 jika tidak. 1
t Jumlah hari dalam sebulan. 28, 29, 30, atau 31 31
c Tanggal berformat ISO 8601, sama dengan 2024-07-01UTC10:22:49+10:22|+0 102024uJul20247, 01 JuSenin 2024 10:22:49 +000049. string dengan panjang tertentu 2024-07-01T10:22:49+00:00
r Tanggal berformat RFC 2822, sama dengan Sen, 1 Jul 2024 10:22:49 +10:22|+0 102024uJul20247, 01 JuSenin 2024 10:22:49 +000049. string dengan panjang bervariasi Mon, 01 Jul 2024 10:22:49 +0000

Ketentuan-ketentuan yang berlaku:

  • Karakter format yang tidak dikenal akan ditampilkan apa adanya.
  • Karakter-karakter dalam tanda kutip akan ditampilkan apa adanya tanpa diformat, contoh:
    • Sekarang bulan Juli → Sekarang bulan Januari
    • 22'49" → 20'11"
  • Karakter escape backslash seperti dalam fungsi date() di PHP's juga dikenal. \H menghasilkan huruf H, \" menghasilkan ".

Kode-kode format tambahan mungkin akan ditambahkan di masa mendatang. Fungsi "time" juga mengenal format waktu relatif dan absolut seperti "11 Desember" dan atau "+10 hours" yang bisa digunakan dalam konversi zona waktu.

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 ..

Contoh:

  • Templat:Ft menghasilkan "Minggu 4 Maret 2007"
  • Templat:Ft menghasilkan "Minggu 4 Maret 2007"
  • Templat:Ft menghasilkan "Minggu 4 Maret 2007"
  • Templat:Ft menghasilkan "Minggu 4 Maret 2007"
  • Templat:Ft menghasilkan "Senin 4 Maret 2024" (!kesalahan: koma seharusnya tidak diikutkan)
  • Templat:Ft menghasilkan "Minggu 4 Maret 2007"
  • Templat:Ft menghasilkan "Minggu 4 Maret 2007"
  • Templat:Ft menghasilkan "Kamis 30 Mei 2024" (32 hari yang lalu)
  • Templat:Ft menghasilkan "16:22" (6 jam lebih awal dari UTC)
  • Templat:Ft menghasilkan "14:15"
  • Templat:Ft menghasilkan "02/2023" (17 bulan yang lalu)

Jangkauan:

Tanggal tak lengkap

29 Februari:

Zona Waktu

#rel2abs:

sintaks:

Fungsi rel2abs adalah untuk mengkonversi pranala relatif ke pranala absolut. Pranala relatif adalah yang dimulai dengan '/', './', '../'. atau mengandung '/../' atau '/.' atau string '..' atau'.'.Jika base path diberikan, maka perlu ditulis dalam sintaks absolut.

Contoh:

  • Di dalam Bantuan:Foo/bar, {{#rel2abs|../baz}} menghasilkan Bantuan:Foo/baz
  • Di dalam Bantuan:Foo, {{#rel2abs|../baz}} menghasilkan baz
  • Di dalam Bantuan:Foo, {{#rel2abs|../../baz}} menghasilkan Error: Invalid depth in path: "Help:Foo/../../baz" (tried to access a node above the root node)"
  • {{#rel2abs|../baz | Bantuan:Bar/foo}} menghasilkan Bantuan:Bar/baz
  • {{#rel2abs|Bantuan:Foo/bar/../baz}} menghasilkan Bantuan:Foo/baz

#titleparts:

sintaks:

  • Templat:Ft
  • Jika mulai_dari dihilangkan, maka dianggap setara dengan 1
  • Ruang Nama untuk namahalaman dikonversikan ke Ruang Nama bahasa lokal

Fungsi titleparts ini akan menghasilkan bagian dari suatu judul halaman sesuai tingkat yang diisi pada parameter.

Contoh:

{{#titleparts:ABC/DEF/GHI|1}} menghasilkan ABC
{{#titleparts:ABC/DEF/GHI|2}} menghasilkan ABC/DEF
{{#titleparts:ABC/DEF/GHI|3}} menghasilkan ABC/DEF/GHI

Contoh dengan satu parameter numerik:

Contoh dengan dua parameter numerik:

Contoh dengan parameter negatif (artinya "dihitung dari kanan"):

#iferror:

Fungsi iferror akan menghasilkan bermasalah jika ekspresi mengandung sebuah <strong class="error"> yang terkadang dihasilkan oleh #expr, #ifexpr, #time, #rel2abs, dan beberapa situasi lainnya di MediaWiki seperti kedalaman rekursif, dan loop templat. Fungsi ini berguna untuk menangkap masukan yang bermasalah.

Contoh:

  • {{#iferror:{{#expr:1+1}}|masukan bermasalah|ekspresi valid}} menghasilkan ekspresi valid
  • {{#iferror:{{#expr:1+Z}}|masukan bermasalah|ekspresi valid}} menghasilkan masukan bermasalah


Lihat pula[sunting sumber]

he:ויקיפדיה:חידושים בתוכנה#ParserFunctions בעברית – זה כאן! it:Aiuto:ParserFunctions ja:Wikipedia:条件文 pl:Wikipedia:Funkcje parsera pt:Ajuda:ParserFunctions zh:Help:模板扩展语法