Wikipedia:Lua
WP:Lua Projek | WT:Lua Perbincangan | Modul | Bantuan | Sumber en: m: mw: external |
- Sublaman Projek
- m:Lua – Laman "pusat" di Meta-Wiki
- mw:Lua – indeks di www.mediawiki.org
Laman ini merupakan sebuah laman maklumat yang menerangkan sepersetujuan komuniti para penyunting di sini bagi beberapa aspek tertentu tentang pengendalian Wikipedia. Laman ini BUKAN laman polisi atau garis panduan dan bertujuan untuk menerangkan amalan atau polisi lain Wikipedia. Sila rujuk polisi atau garis panduan yang berkaitan jika terdapat percanggahan antara laman ini dengan laman polisi atau garis panduan. |
Ruang nama | |||
---|---|---|---|
Ruang nama subjek | Ruang nama perbincangan | ||
0 | (Utama/Rencana) | Perbincangan | 1 |
2 | Pengguna | Perbincangan pengguna | 3 |
4 | Wikipedia | Perbincangan Wikipedia | 5 |
6 | Fail | Perbincangan fail | 7 |
8 | MediaWiki | Perbincangan MediaWiki | 9 |
10 | Templat | Perbincangan templat | 11 |
12 | Bantuan | Perbincangan bantuan | 13 |
14 | Kategori | Perbincangan kategori | 15 |
100 | Portal | Perbincangan portal | 101 |
710 | TimedText | TimedText talk | 711 |
828 | Modul | Perbincangan modul | 829 |
Tidak digunakan lagi | |||
2300 | [[Wikipedia:Alat|]] | 2301 | |
2302 | [[Wikipedia:Alat|]] | 2303 | |
Tidak dipasang | |||
90 | Thread | Thread talk | 91 |
92 | Summary | Summary talk | 93 |
108 | Buku | 109 | |
118 | Draf | 119 | |
442 | Course | Course talk | 443 |
444 | Institution | Institution talk | 445 |
446 | Program pendidikan | 447 | |
2600 | Topic | 2601 | |
Ruang nama maya | |||
-1 | Khas | ||
-2 | Media | ||
Senarai semasa (panggilan API) |
Lua ialah sebuah bahasa pengaturcaraan yang sekarang disediakan buat tapak-tapak Wikipedia melalui penyambung MediaWiki, Scribunto. Kod Lua sekarang boleh dibenamkan dalam templat wiki dengan menggunakan fungsi "{{#invoke:}}" penyambung Scribunto buat MediaWiki.
Kod sumber Lua disimpan dalam laman-laman yang digelar modul (contoh Modul:Pisang. Modul-modul ini kemudian dipanggil dengan "{{#invoke:}}") pada laman-laman templat (misalan, Module:Pisang/doc menggunakan kod {{#invoke:Pisang|hello}} bagi mencetak teks, "Helo, dunia!").
Modul-modul contoh
[sunting sumber]- Module:Pisang: Skrip paling mudah, menyediakan satu fungsi tanpa apa-apa argumen.
- Module:Pisang: Memerikan bagaimana mengakses dan mengguna parameter.
Meminta skrip
[sunting sumber]Lawati (Inggeris) en:Wikipedia:Lua requests bagi memohon bantuan dalam penulisan skrip Lua bagi melaksanakan tugas tertentu di Wikipedia atau projek Yayasan Wikimedia lain.
Sejarah
[sunting sumber]Sejarah buruk. {{qif}}, ParserFunctions, Lua extension, perdebatan penskripan wiki (JavaScript v. Lua), mw:Extension:WikiScripts, Tim menulis Scribunto dengan sokongan awal untuk Lua.
Selepas perbincangan bertahun-tahun, Lua dipasang pada tahun 2012 di test2.wikipedia.org, dengan jemputan terbuka kepada semua penyunting untuk menguji pembangunan modul-modul Lua. Lua dipasang pada Wikipedia bahasa Inggeris pada Februari 2013 selepas ujian di mediawiki.org dan wiki-wiki ujian Wikimedia.
Tentang Lua
[sunting sumber]Lua ialah sebuah bahasa penskripan yang dapat digunakan untuk menganalisis data, mengira ungkapan, dan memformat keputusan menggunakan fungsi atau pengaturcaraan berorientasi objek. Walaupun sesetengah skrip Lua dapat dikekalkan ringkas agar memudahkan pemahaman, Lua membenarkan pengatucaraan struktur-struktur kompleks yang boleh mencabar seorang ahli sains komputer, dengan jadual, fungsi-fungsi dinamik, dan tatasusunan bersekutu yang membolehkan subskrip indeks boleh terdiri daripada perkataan selian nombor-nombor indeks. Lua juga menyokong rekursi fungsi bersarang, justeru pengaturcaraan terlalu kompleks harus dielakkan agar pengguna-pengguna lain dapat memahami bagaimana sesuatu modul Lua dapat disenggara. Berikut ialah sebuah contoh kod sumber Lua bagi fungsi helo dunia yang terkandung dalam Modul:HeloDunia:
-- Semua modul Lua di Wikipedia perlu bermula dengan definisi pemboleh ubah yang akan memegang:
-- fungsi-fungsi luar yang dapat diakses. Modul boleh diberi apa-apa nama dan juga boleh menyimpan data.
my_object = {};
-- Menambah fungsi pada pemboleh ubah. Ini dapat dipanggil di Wikipedia dengan perintah "#invoke".
-- "frame" akan mengandubgi data yang dikirim Wikipedia kepada fungsi ini apabila dipanggil.
my_object.hello = function( frame )
-- Pengisytiharan pemboleh ubah lokal dan mengumpukkan data padanya.
local str = "Helo Dunia!"
-- Hentikan fungsi ini dan kirim maklumat dalam "str" balik kepada Wikipedia.
-- Fungsi "print" (cetak) tidak dibenarkan, jadi semua output dilaksanakan melalui
-- memulangkan rentetan dengan cara ini.
return str
-- Hentikan fungsi.
end
-- Semua modul berakhir dengan memulangkan pemboleh ubah yang mengandungi fungsi-fungsinya kepada Wikipedia.
return my_object
-- Kita sekarang boleh mengguna modul ini dengan memanggil {{#invoke: HelloWorld | hello }}.
-- Perintah #invoke bermula dengan nama modul, dalam kes ini, "HeloDunia",
-- kemudian ia mengambil nama satu daripada fungsinya sebagai argumen, dalam kes ini "helo"..
Sampel Lua terserlah dengan tag "<source lang="lua">...</source>" yang diletakkan sebelum dan selepas kod sumber Lua. Contoh Lua yang lebih kompleks dapat dilihat dalam rencana: Lua.
Panduan bagaimana mengguna Lua dalam MediaWiki dapat dilihat di mw:Extension:Scribunto/Lua reference manual.
Ujian unit
[sunting sumber]Kerangka ujian unit buat skrip Lua di Wikipedia disediakan di en:Module:UnitTests. Ia membenarkan anda untuk melaksana skrip berasaskan set input dan sahkan yang output yang disangkakan dihasilkan skrip. Ujian unit berguna terutamanya bagi mengesan regresi hasil timbulnya masalah baharu ekoran pengubahsuaian skrip.
Mengikut resam, ujian unit bagi modul seperti Modul:Pisang diletakkan dalam Modul:Pisang/kes_ujian, dan dilaksanan pada Module talk:Pisang/kes_ujian dengan contohnya, {{#invoke: Pisang/kes_ujian | laksan_ujian}}
. Kaedah ujian perlu bermula dengan "ujian". Contoh ringkas daripada Modul:Pisang/kes_ujian seperti di bawah.
-- Ujian unit bagi [[Modul:Pisang]]. Petik halaman perbincangan untuk melaksana ujian.
local p = require('Module:UnitTests')
function p:test_hello()
self:preprocess_equals('{{#invoke:Pisang | helo}}', 'Helo, dunia!')
end
return p
Ciri-ciri khusus buat Wikipedia
[sunting sumber]Keseluruhan: Lua hanya dapat mendapatkan input sebagai rentetan teks yang dihulurkan kepada {{#invoke:}}
dan apa yang dapat diambil melalui frame:expandTemplate, frame:preprocess, dan sebagainya. Pada Wikipedia, Lua hanya menghasilkan output berbentuk teks wiki, tidak termasuk jelmaan prasimpanan atau transklusi dan binaan {{...}}
lain. Juga, semua Lua yang terdapat pada laman dihadkan dengan masa CPU selama 10 saat (anda boleh melihat masa yang diambil bagi menghurai templat atau modul dalam kod sumber laman yang dipaparkan). Dan relatif berbanding Lua piawai, Lua Scribunto kekurangan pelbagai fungsi (lihat mw:Extension:Scribunto/Lua reference manual#Differences from standard Lua).
Teks wiki
[sunting sumber]Pengepala Wikipedia yang ditransklusi sering mengandungi kod tersorok seperti "UNIQ5ae8f2aa414ff233-h-3--QINU" yang mungkin perlu dibuang agar dapat dihurai dengan berkesan..
Pautan wiki jenis [[Wikipedia:Bantuan|]] tidak akan berkesan jika dipulangkan sebagai output – pautan-pautan ini perlu ditulis secara tersurat seperti [[Wikipedia:Bantuan|Bantuan]]. Jelmaan prasimpanan lain, seperti penggantian ~~~~
dengan tandatangan, juga tidak akan diproses. Transklusi templat, panggilan fungsi penghurai, dan penggantian pemboleh ubah (yakni apa-apa yang memiliki {{...}}
) tidak akan diproses, dan begitu juga tag seperti <ref> atau <nowiki>.
Pelabelan templat yang diubah
[sunting sumber]Sila letakkan templat {{Lua}} pada semua templat yang mengguna Lua. Hal ini akan membantu penyampaian maklumat tentang penggunaan Lua dan pengubahan templat. Ia kelihatan seperti ini:
Templat ini menggunakan Lua: |
Lihat juga
[sunting sumber]- Wikipedia Inggeris
- en:Wikipedia:Lua style guide – standards to improve the readability of code through consistency
- en:Special:PrefixIndex/Module: – tracking of Lua modules can be done by using Special:PrefixIndex
- en:Help:Lua debugging – a how-to guide about debugging Lua modules
- en:Category:Lua-based templates – groups of Lua-based templates
- en:Module:Sandbox provides a pseudo-namespace for experimenting with Lua modules.
- en:WP:Lua requests – requests for Lua-based templates or tasks