Wikipedia:Lua: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
k Menjalankan modul: fix galat skrip
Lihat pula: menggunakan QuickEdit
 
(20 revisi perantara oleh 9 pengguna tidak ditampilkan)
Baris 1:
{{Information page|WP:Lua|WP:LUA}}
{{inuse}}
{{Information page|WP:Lua}}
{{Namespaces}}
 
Baris 11 ⟶ 10:
Modul dapat dijalankan di halaman wiki normal menggunakan fungsi parser #invoke. Sintaks #invoke mirip dengan sintaks templat, tetapi terdapat beberapa perbedaan. Perbedaan yang paling penting adalah Anda memerlukan ''nama fungsi''. Sebuah fungsi adalah satu set perintah yang mengambil nilai input, memprosesnya, dan menghasilkan suatu nilai output.<ref>Anda juga dapat menggunakan lebih dari satu nilai keluaran, tapi bukan berarti bahwa fungsi yang melakukanya dapat diakses dari sebuah halaman wiki normal.</ref> Sistemnya sangat mirip dengan templat: Anda memasukan argumen, kemudian modul akan memprosesnya, dan Anda akan mendapat hasil keluaran. Bagaimanapun, Anda dapat mendefinisikan beberapa fungsi dalam satu modul, sedangkan templat, Anda hanya dapat menggunakan satu fungsi untuk satu halaman.
 
Tambahan lagi, Anda tidak dapat menjalankan modul secara langsung &mdash; Anda hanya dapat menjalankan salah satu ''fungsi'' modul. Modul hanyalah tempat untuk menampung fungsi, dan tidak bisa bekerja sendiri. Jadi ada dua alasan mengapa kita perlu memasukan nama fungsi: kita tidak bisa menjalankan modul tanpanya, dan tanpa merinci nama fungsi, Lua tidak akan tahu fungsi mana yang akan kita jalankan.
 
Cara paling sederhana untuk menjalankan lua dari halaman wiki adalah:
 
&#123;{{#invoke:''modulenama namemodul''|''functionnama namefungsi''}}
 
Sebagai contoh, kita dapat menjalankan [[Modul:Pisang]] disini modul bananapisang memiliki satu fungsi bernama "hello".
 
* <code><nowiki>{{#invoke:pisang|hello}}</nowiki></code> &rarr; {{#invoke:pisang|hello}}
<!--
=== Using arguments ===
 
=== Menggunakan argumen ===
Arguments are passed to modules in the same way that they are passed to templates. Note, however, that the text after the first pipe character is always the function name; the first positional argument is the text after the ''second'' pipe.
 
Argumen pada modul bekerja dengan cara yang sama seperti pada templat, tetapi setelah karakter pipa pertama selalu berisi nama fungsi; argumen pertama adalah teks setelah tanda "pipa" kedua.
&#123;{#invoke:''module name''|''function name''|''first positional argument''|''second positional argument''|''named argument'' = ''value''}}
 
{{#invoke:''nama modul''|''nama fungsi''|''argumen pertama''|''argumen kedua''|''isi argumen'' = ''value''}}
For example, in [[Module:BananasArgs]], the "hello" function greets different people depending on the first positional argument. It works like this:
* <code><nowiki>{{#invoke:BananasArgs|hello|Kate}}</nowiki></code> &rarr; {{#invoke:BananasArgs|hello|Kate}}
* <code><nowiki>{{#invoke:BananasArgs|hello|Fred}}</nowiki></code> &rarr; {{#invoke:BananasArgs|hello|Fred}}
 
Sebagai contoh, pada [[Modul:PisangArgs]], fungsi "hai" menyapa orang yang berbeda tergantung pada argumen pertama. Seperti ini:
BananasArgs also has a function named "count_fruit" which uses the named arguments <code>bananas</code> and <code>apples</code> to count the number of bananas and apples we have. It can be run like this:
* <code><nowiki>{{#invoke:BananasArgsPisangArgs|count_fruithai|apples=3|bananas=4Om Joko}}</nowiki></code> &rarr; {{#invoke:BananasArgsPisangArgs|count_fruithai|apples=3|bananas=4Om Joko}}
* <code><nowiki>{{#invoke:BananasArgsPisangArgs|count_fruithai|bananas=5|apples=2Mbah Darmo}}</nowiki></code> &rarr; {{#invoke:BananasArgsPisangArgs|count_fruithai|bananas=5|apples=2Mbah Darmo}}
 
Pada modul PisangArgs juga memiliki fungsi bernama "hitung_semua" yang menggunakan argumen bernama <code>pisang</code> dan <code>donat</code> untuk menghitung jumlah pisang dan donat yang kita miliki. Seperti ini:
Most modules will have a documentation page explaining what arguments can be used and what their effects will be.-->
* <code><nowiki>{{#invoke:BananasArgsPisangArgs|hellohitung_semua|Freddonat=13|pisang=21}}</nowiki></code> &rarr; {{#invoke:BananasArgsPisangArgs|hitung_semua|hellodonat=13|Fredpisang=21}}
* <code><nowiki>{{#invoke:BananasArgsPisangArgs|hellohitung_semua|Katepisang=17|donat=6}}</nowiki></code> &rarr; {{#invoke:BananasArgsPisangArgs|hitung_semua|hellopisang=17|Katedonat=6}}
 
Modul memiliki halaman dokumentasi yang akan menjelaskan tentang argumen dan cara penggunaannya.
== Lihat pula ==
* [[m:lua]] halaman "sentral" di Meta-Wiki
* [[mw:lua]] indeks di www.mediawiki.org
* [[:en:Wikipedia:Lua|Informasi mengenai lua di Wikipedia bahasa Inggris]]
 
== Contoh modul ==
* [[Modul:Pisang]]: Skrip paling sederhana, berisi fungsi tunggal tanpa argumen.
* [[Modul:PisangArgs]]: Mendemonstrasikan bagaimana mengakses dan menggunakan parameter.
 
== Tentang Lua ==
{{wikipedia-stub}}
:''Lihat juga [[:File:WMF Tech Talk 2013-02-28 slides - Scribunto presentation.pdf|Presentasi singkat Brad Jorsch's untuk contoh sederhana bagaimana mengkonversikan templat wikiteks menjadi modul Lua.]]''
Lua adalah [[bahasa skrip]] yang dapat digunakan untuk menganalisis data, mengeksekusi suatu ekspresi, dan memformat hasil menggunakan fungsi atau [[pemrograman berorientasi objek]]. Meskipun beberapa skrip Lua dibuat sederhana, untuk mempermudah pemahaman, Lua memungkinan juga struktur kompleks termasuk tabel, fungsi dinamis, [[susunan asosiatif]] dimana indeks [[subskrip]] bisa berupa kata atau nomor indeks. Lua juga mendukung [[rekursi]] fungsi 're-nested', sehingga pemeliharaan harus dilakukan untuk menghindari kompleksitas yang berlebihan yang mengakibatkan pengguna lain tidak akan mengerti bagaimana mengatur modul Lua. Berikut ini adalah contoh [[kode sumber]] Lua untuk fungsi [[hello world]] yang terdapat di modul [[Modul:HelloWorld]]:
<syntaxhighlight lang="lua">
-- All Lua modules on Wikipedia must begin by defining a variable that will hold their
-- externally accessible functions. They can have any name and may also hold data.
my_object = {}
 
-- Add a function to the variable. These are callable in Wikipedia via the #invoke command.
-- "frame" will contain the data that Wikipedia sends this function when it is called.
my_object.hello = function( frame )
 
-- Declare a local variable and assign data to it.
local str = "Hello World!"
 
-- Quit this function and send the information in "str" back to Wikipedia.
-- The "print" function is not allowed, so all output is accomplished via
-- returning strings in this fashion.
return str
 
-- End the function.
end
 
-- All modules end by returning the variable containing its functions to Wikipedia.
return my_object
 
-- We can now use this module by calling {{#invoke: HelloWorld | hello }}.
-- The #invoke command begins with the module's name, in this case "HelloWorld",
-- then takes the name of one of its functions as an argument, in this case "hello".
</syntaxhighlight>
Suatu contoh dari lua yang ditandai dengan tag "&lt;source lang="lua">...&lt;/source>" terletak diantara kode sumber Lua. Untuk melihat beberapa contoh yang lebih kompleks, lihat artikel: "[[Lua (bahasa pemrograman)]]".
 
Untuk instruksi tentang penggunaan Lua dalam lingkup MediaWiki (dan tentu saja Wikipedia), lihat [[mw:Extension:Scribunto/Lua reference manual]].
 
== Catatan ==
{{reflist}}
 
== Lihat pula ==
* [[Special:PrefixIndex/Module:]] – indeks modul [[Special:PrefixIndex]]
* [[:en:Help:Lua debugging]]
* [[Modul:Bak pasir]]
* [[:Kategori:Templat berbasis Lua]]
* [[:Kategori:Meta modul Lua]]
* [[mw:Manual:Coding conventions/Lua|Manual:Coding conventions/Lua]]
* [[mw:Extension:Scribunto/Lua reference manual]] and all [[mw:Special:PrefixIndex/Module:|Modules]].
* [[:en:Wikipedia:Advanced template coding]]
{{Navbox Gabungan Pedoman WBI}}