Modul:Lencong
Halaman ini punya modul Lua digunakan in system messages. Perubahan ke atasnya mungkin akan menyebabkan perubahan serta merta kepada antara muka pengguna Wikipedia. Untuk mengelakkan gangguan besar-besaran, sebarang perubahan sepatutnya diuji pada modul punya subhalaman kotak pasir atau laman uji kaji, atau pada module sandbox anda. Perubahan yang sudah diuji boleh ditambah pada laman ini dalam suntingan tunggal. Sila bincangkan perubahan pada laman perbincangan sebelum melaksanakannya. |
Modul ini ditaraf beta, dan dapat digunakan. Ia masih baharu dan harus digunakan dengan berhati-hati agar hasilannya seperti yang dijangkakan. |
Modul ini menerima nama sebuah laman. Ia menentukan sama ada laman itu sebuah lencongan; jika ya, ia akan mencari laman, menyari sasaran dan memulangkan nama sasaran sebagai teks. Cara menggunanya ialah {{#invoke:lencong|main|nama-laman-sasaran-lencongan}}.
Templat lazimnya tidak menerima ataupun menyediakan tanda kurung siku [ ], justeru untuk memaparkan hasilan sebagai sebuah pautan, gunakan [[{{#invoke:lencong|main|nama-laman-sasaran-lencongan}}]]. Pautan merah akan ditimbulkan jika laman sasaran tidak wujud. Ralat akan ditimbulkan jika nama modul (dalam kes ini, lencong) disalah eja atau ditaip dengan huruf besar seperti yang biasa dilakukan (yakni, #LENCONG) akan tetapi tidak ada ralat akan dipaparkan jika fail bukan sebuah lencongan (teks asal dipulangkan) ataupun jika nama fail kosong (mulangkan laman kosong).
Walau bagaimanapun, jika parameter tanda kurung siku diberi sebagai nilai tak kosong, tanda kurung siku akan dilanjutkan dan dipaparkan pada laman.
Contoh
[sunting sumber]Lihat Modul:Lencong/kes ujian
{{#invoke:lencong|main|Wikipedia:Kedai Kopi/Jadual usul}}
menghasilkan
Wikipedia:Kedai Kopi (dasar)/Jadual usul
{{#invoke:lencong|main|[[Wikipedia:Kedai Kopi/Jadual usul]]|bracket=yes}}
menghasilkan
Wikipedia:Kedai Kopi (dasar)/Jadual usul
Jika sasaran bukan lencongan:
{{#invoke:lencong|main|Wikipedia:Kedai Kopi|}}
menghasilkan
Wikipedia:Kedai Kopi
Ejaan silap
{{#invoke:LENCONG|main|[[Wikipedia:Kedai Kopi/Jadual usul]]}}
menghasilkan
Ralat skrip: Modul "LENCONG" tidak wujud.
-- Given a single page name determines what page it redirects to and returns the target page name, or the
-- passed page name when not a redirect. The passed page name can be given as plain text or as a page link.
-- Returns page name as plain text, or when the bracket parameter is given, as a page link. Returns an
-- error message when page does not exist or the redirect target cannot be determined for some reason.
-- Thus these are roughly the same:
-- [[{{#invoke:redirect|main|redirect-page-name}}]] and {{#invoke:redirect|main|redirect-page-name|bracket=yes}}
local p = {}
function p.main(frame)
-- If called via #invoke, use the args passed into the invoking
-- template, or the args passed to #invoke if any exist. Otherwise
-- assume args are being passed directly in from the debug console
-- or from another Lua module.
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs( frame.args ) do
origArgs = frame.args
break
end
else
origArgs = frame
end
-- Trim whitespace and remove blank arguments.
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( v )
if v ~= '' then
args[k] = v
end
end
local rname, bracket = args[1], args.bracket
if type(rname) ~= "string" or not mw.ustring.match(rname, "%S") then return end
bracket = bracket and "[[%s]]" or "%s"
rname = mw.ustring.match(rname, "%[%[(.+)%]%]") or rname
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local noError, rpage = pcall(mw.title.new, rname)
if not noError or noError and not rpage or not rpage.isRedirect then
-- mw.title.new failed, or the page is not a redirect, so use the passed page name.
return mw.ustring.format(bracket, rname)
end
local redirect = mw.ustring.match(rpage:getContent() or "", "^%s*#[Ll][Ee][Nn][Cc][Oo][Nn][Gg]%s*:?%s*%[%[([^%[%]]-)%]%]" )
if redirect then
-- Decode html entities and percent encodings.
redirect = mw.text.decode(redirect, true)
redirect = mw.uri.decode(redirect, 'WIKI')
return mw.ustring.format(bracket, redirect)
else
return mw.ustring.format('<span class="error">[[Module:lencong]] ralat: tidak dapat menghuraikan lencongan - [[%s]]</span>', rname)
end
end
return p