Modul:Arguments/doc
| Modul Lua ini digunakan di pesan sistem, dan pada sekitar 2.180.000 halaman, atau sekira 52% dari keseluruhan halaman. Perubahan pada templat atau modul ini dapat mengubah antarmuka pengguna Wikipedia secara serentak. Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:Arguments, atau bak pasir modul Anda. Perubahan yang telah diuji kemudian dapat ditambahkan ke halaman ini dalam satu suntingan. Harap diskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya. |
| Modul ini dilindungi. Modul ini sangat mencolok yang digunakan oleh banyak halaman, atau sangat sering disubstitusikan. Karena vandalisme atau kesalahan akan mempengaruhi banyak halaman, dan suntingan kecil dapat memberi beban besar pada server, modul ini dilindungi dari penyuntingan. |
| Modul Lua ini digunakan di pesan sistem, dan pada sekitar 2.180.000 halaman, atau sekira 52% dari keseluruhan halaman. Perubahan pada templat atau modul ini dapat mengubah antarmuka pengguna Wikipedia secara serentak. Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:Arguments, atau bak pasir modul Anda. Perubahan yang telah diuji kemudian dapat ditambahkan ke halaman ini dalam satu suntingan. Harap diskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya. |
Modul ini menyediakan pemrosesan argumen yang mudah yang dikirimkan dari #invoke. Ini adalah meta-modul, yang dimaksudkan untuk digunakan oleh modul lain, dan tidak boleh dipanggil dari #invoke secara langsung (untuk modul yang dapat dipanggil langsung oleh template, Anda mungkin ingin melihat {{#invoke:params}}). Fitur-fiturnya antara lain:
- Pemangkasan argumen yang mudah dan penghapusan argumen kosong.
- Argumen dapat diteruskan oleh frame saat ini dan frame induk pada saat yang sama. (Lebih detailnya di bawah ini.)
- Argumen dapat diteruskan langsung dari modul Lua lain atau dari konsol debug..
- Sebagian besar fitur dapat disesuaikan.
Penggunaan dasar
[sunting sumber]Pertama, Anda perlu memuat modul. Modul ini berisi satu fungsi, bernama getArgs.
local getArgs = require('Module:Arguments').getArgs
Dalam skenario paling dasar, Anda dapat menggunakan getArgs di dalam fungsi utama Anda. Variabel args adalah tabel yang berisi argumen dari #invoke. (Lihat di bawah untuk detailnya.)
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
-- Main module code goes here.
end
return p
Latihan yang disarankan
[sunting sumber]Namun, praktik yang disarankan adalah menggunakan fungsi terpisah sebagai titik masuk dari #invoke hanya untuk memproses argumen. Hal ini memungkinkan modul Lua lainnya untuk memanggil logika inti Anda secara langsung, meningkatkan kinerja dengan menghindari overhead interaksi dengan frame obyek.
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
-- Main module code goes here.
end
return p
Cara ini disebut dari template adalah {{#invoke:Example|main}} (opsional dengan beberapa parameter seperti {{#invoke:Example|main|arg1=value1|arg2=value2}}), dan cara ini dipanggil dari modul adalah require('Module:Example')._main({arg1 = 'value1', arg2 = value2, 'spaced arg3' = 'value3'}). Yang kedua ini dilakukan adalah membuat tabel dengan argumen di dalamnya, lalu memberikan tabel tersebut ke p._main(args) function, fungsi, yang menggunakannya secara asli.
Berbagai fungsi
[sunting sumber]Jika Anda ingin beberapa fungsi menggunakan argumen, dan Anda juga ingin argumen tersebut dapat diakses dari #invoke, Anda dapat menggunakan fungsi pembungkus.
local getArgs = require('Module:Arguments').getArgs
local p = {}
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame)
return p[funcName](args)
end
end
p.func1 = makeInvokeFunc('_func1')
function p._func1(args)
-- Code for the first function goes here.
end
p.func2 = makeInvokeFunc('_func2')
function p._func2(args)
-- Code for the second function goes here.
end
return p