Lompat ke isi

Modul:Arguments/doc

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

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