De Muysc cubun - Lengua Muisca
La documentación para este módulo puede ser creada en Módulo:LinkList/doc
-- Módulo:LinkList
local p = {}
local function getArg(frame, name, default)
local v = (frame.args and frame.args[name]) or ''
if v == '' and frame.getParent then
local parent = frame:getParent()
if parent and parent.args then v = parent.args[name] or '' end
end
if v == '' then v = default or '' end
return v
end
function p.links(frame)
local valores = getArg(frame, 'valores', '')
local outsep = getArg(frame, 'sep', ', ')
local ns = getArg(frame, 'ns', '')
local lead = getArg(frame, 'leadcolon', '')
local prefix = getArg(frame, 'prefix', '')
local suffix = getArg(frame, 'suffix', '')
local doSort = getArg(frame, 'sort', '') ~= ''
-- NUEVO: base para enlaces externos (déjalo vacío para enlaces internos)
local base = getArg(frame, 'base', '') -- ej.: 'https://es.wikipedia.org/wiki/'
-- NUEVO: envoltorio para poder forzar target=_blank vía Common.js
local wrapCls = getArg(frame, 'class', 'll-newtab')
local newtab = getArg(frame, 'newtab', '') ~= ''
if valores == '' then
return '⚠️ LinkList: sin "valores".'
end
-- Normaliza el separador: si es solo coma, añade espacio
if outsep == ',' or outsep:match('^,%s*$') then
outsep = ', '
end
local items = {}
for tok in mw.text.gsplit(valores, ',', true) do
tok = mw.text.trim(tok)
if tok ~= '' then table.insert(items, tok) end
end
if doSort then
table.sort(items, function(a,b)
return mw.ustring.lower(a) < mw.ustring.lower(b)
end)
end
local out = {}
for _, it in ipairs(items) do
local target, label = it:match('^(.-)|(.+)$')
if not target then target, label = it, it end
target = prefix .. target .. suffix
local full = (lead ~= '' and ':' or '') .. ns .. target
if base ~= '' then
-- Enlace EXTERNO: convierte espacios a guiones bajos para que la URL sea válida
local urlTitle = full:gsub(' ', '_')
table.insert(out, string.format('[%s%s %s]', base, urlTitle, label))
else
-- Enlace INTERNO wiki
table.insert(out, string.format('[[%s|%s]]', full, label))
end
end
local text = table.concat(out, outsep)
if newtab then
text = string.format('<span class="%s">%s</span>', wrapCls, text)
end
return text
end
return p
