Modul:daftar
Tampilan
(Dialiahkan dari Modul:list)
Dokumentasi untuk modul ini dapat dibuat di Modul:daftar/doc
local p = {}
local linksModule = require("Modul:pranala")
local langModule = require("Modul:bahasa")
-- Separator helper
local function renderSeparator()
return '<span class="content-list-separator"> • </span>'
end
-- Render one item (linked version)
local function renderLinked(part, langcode, subpagename, idx, noitalic)
if part == subpagename then
return string.format(
'<span class="content-list-item"><span class="content-list-current">%s</span></span>',
mw.text.encode(part)
)
end
local entryArgs = {
[1] = langcode,
[2] = part,
notext = "1",
idx = idx,
}
if noitalic then
entryArgs.noitalic = "1"
end
return string.format(
'<span class="content-list-item">%s</span>',
linksModule.mention({ args = entryArgs })
)
end
-- Render one item (plain version)
local function renderPlainItem(part, subpagename)
if part == subpagename then
return string.format(
'<span class="content-list-item"><span class="content-list-current">%s</span></span>',
part
)
end
return string.format('<span class="content-list-item">%s</span>', part)
end
-- Linked version
function p.render(frame)
local args = frame.args
local langArg = mw.text.trim(args[1] or "")
local langcode = langModule.getLangCode({ args = { langArg } })
if not langcode or langcode == "" then
return ""
end
local subpagename = mw.title.getCurrentTitle().subpageText
local noitalic = args.noitalic and args.noitalic ~= ""
local items = {}
local i = 2
while args[i] do
local part = mw.text.trim(args[i] or "")
if part ~= "" then
table.insert(items, renderLinked(part, langcode, subpagename, i - 1, noitalic))
end
i = i + 1
end
if #items == 0 then
return ""
end
return string.format(
'<span class="content-list">%s</span>',
table.concat(items, renderSeparator())
)
end
-- Plain version
function p.renderPlain(frame)
local args = frame.args
if not args[1] or args[1] == "" then
return ""
end
local subpagename = mw.title.getCurrentTitle().subpageText
local items = {}
local i = 1
while args[i] do
local part = mw.text.trim(args[i] or "")
if part ~= "" then
table.insert(items, renderPlainItem(part, subpagename))
end
i = i + 1
end
if #items == 0 then
return ""
end
return string.format(
'<span class="content-list">%s</span>',
table.concat(items, renderSeparator())
)
end
return p