Módulo:Listas

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpàgina /doc. [salta a la caja de código]


Este módulo devuelve varias clases de listas.

Uso

{{#invoke:listas|función|primer elemento|segundo elemento|...|último elemento|parámetros opcionales}}

Funciones

Las funciones son:

lista

Devuelve una lista de elementos separados por comas. Por ejemplo:

{{#Invoke:listas|lista|elemento1|elemento2|elemento3}} produce:

elemento1, elemento2 y elemento3
listahtml

Devuelve una lista html. En el ejemplo anterior, cambiando la función:

{{#Invoke:listas|listahtml|elemento1|elemento2|elemento3}} produce:

  • elemento1
  • elemento2
  • elemento3

Parámetros opcionales

  • enlazar: Si se informa con "sí" se genera un enlace a cada elemento de la lista.
    • La plantilla automáticamente añade a cada elemento el espacio de nombres donde se utiliza la plantilla. Por ejemplo, {{#Invoke:listas|lista|enlazar=sí|listas|math}} añade el espacio de nombre "Módulo" por haberse utilizado en Módulo:Listas/doc:
    listas y math
    Para evitarlo puede utilizarse el parámetro espacio de nombres sin informar. Por ejemplo, {{#Invoke:listas|lista|enlazar=sí|espacio de nombres=|listas|math}} produce:
    listas y math
    • La plantilla automáticamente desambigua. Así si un elemento incluye texto entre paréntesis no lo muestra aunque en caso de enlazar se enlaza al nombre completo del elemento. Por ejemplo, {{#Invoke:listas|lista|enlazar=sí|espacio de nombres=|Bill Morrison (director)|elemento2|elemento3}} muestra "Bill Morrison" pero enlaza a Bill Morrison (director):
      Bill Morrison, elemento2 y elemento3
    • Si uno de los elementos ya está enlazado se muestra correctamente. Por ejemplo {{#Invoke:listas|lista|enlazar=sí|espacio de nombres=|[[Bill Morrison]]|elemento2|elemento3}} muestra Bill Morrison en vez de [[Bill Morrison]]:
      Bill Morrison, elemento2 y elemento3
  • delimitador: Se utiliza para mostrar los elementos entre delimitadores. Por ejemplo para mostrar los elementos entre cursivas se puede hacer: {{#Invoke:listas|lista|enlazar=no|delimitador=''|El gran robo del tren (novela)|Caída libre (novela)||Jumper (novela)|}}
    El gran robo del tren, Caída libre y Jumper
  • clase: Si se utiliza la función listahtml, clase CSS de la lista. Los valores normales son "plainlist" para listas sin viñetas y "hlist" para listas horizontales. Por ejemplo, {{#Invoke:listas|listahtml|enlazar=sí|clase=hlist|elemento1|elemento2}} produce:

Véase también


Esta documentación está transcluida desde Módulo:Listas/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.
local listas = {}
local existeCategoria = require('Módulo:Páginas').existeCategoria
 
-- Función que devuelve los elementos de la lista.
-- Solo se obtienen los elementos informados.
function listas.ObtenerElementosLista(frame)
    local Argumentos = frame.args;
    local parent     = frame:getParent();
 
    if not Argumentos[1] then
        Argumentos = parent.args;
    end    
 
    local categoria=Argumentos['categoría'] or ''
    local ordenar  =Argumentos['ordenar']   or ''
 
    local ElementosLista = {}    
 
    local i = 1;
    local j=0;
    while Argumentos[i]  do
      if Argumentos[i] ~= '' then
      	j=j+1
        -- Eliminar el texto ente paréntesis del argumento i-ésimo si es de la forma 
        --   "Texto (lo que sea)".
        -- Esto solo se hará si después de los paréntesis no hay nada. Ejemplos:
        --   Alfonso Albacete (director) --> Alfonso Albacete
        --   [[Carlos Vera (árbitro de fútbol)|Carlos Vera]] --> [[Carlos Vera (árbitro de fútbol)|Carlos Vera]]
 
      	local TextoAMostrar=Argumentos[i]:match('^(.*)%s%(.*%)$') or Argumentos[i]
 
      	-- Añadir el enlace si no incluye ya uno
        local enlazar = frame.args.enlazar or parent.args.enlazar       
 
        if mw.ustring.find(Argumentos[i], '%[%[') then enlazar = 'no' end
 
      	if enlazar == 'sí' then
      	  --Obtener el espacio de nombres de los argumentos
      	  local espacio_nombres=frame.args.nspace or parent.args.nspace or frame.args['espacio de nombres'] or parent.args['espacio de nombres'] or mw.title.getCurrentTitle().nsText
 
      	  if espacio_nombres == '' then
      	  	--Se accede a la función con el argumento espacio_nombres pero está sin informar      	  	
      	  	if Argumentos[i] == TextoAMostrar then
      	  		ElementosLista[j] = mw.ustring.format('[[%s]]',TextoAMostrar)
      	    else
      	    	ElementosLista[j] = mw.ustring.format('[[%s|%s]]',Argumentos[i],TextoAMostrar)
      	  	end
      	  else
      	  	--Se accede sin el espacio de nombres (en cuyo caso se toma el espacio de nombres desde global) o informado.
 
            --Obtener el nombre de la página (eliminando el espacio de nombres si lo tiene). Similar a {{PAGENAME:Argumentos[i]}}
            --Por ejemplo, si argumentos[i] vale "Plantilla:A" se informa nombrepagina con "A".
            local nombrepagina
 
            local noError, pageObject = pcall(mw.title.new, Argumentos[i])
 
            if noError then 
            	nombrepagina = pageObject.text
            else 
            	nombrepagina = Argumentos[i]
            end      	  
 
      	    -- Enlazar tomando como espacio de nombres el recibido en el argumento o el global.
            ElementosLista[j] = mw.ustring.format( '[[:%s:%s|%s]]',espacio_nombres,nombrepagina,TextoAMostrar)      	  	
      	  end
      	else
          ElementosLista[j] = TextoAMostrar
        end
 
        -- Añadir el delimitador
        local delimitador = frame.args.delimitador or parent.args.delimitador or frame.args.delim or parent.args.delim
 
        if delimitador then ElementosLista[j] = delimitador .. ElementosLista[j] .. delimitador end
 
        --Añadir la categoría
        if categoria  ~= '' then
        	-- Utilizar argumentos[i] si existe la correspondiente categoría
        	local CategoriaElemento = existeCategoria(categoria:gsub('$1',Argumentos[i]))
 
        	-- Si no existe ver si existe la categoría eliminando el texto entre paréntesis
        	if not CategoriaElemento and TextoAMostrar ~= Argumentos[i] then
        		CategoriaElemento = existeCategoria(categoria:gsub('$1',TextoAMostrar))
        	end
        	if CategoriaElemento then 
        		if ordenar == '' then
        		  ElementosLista[j] = ElementosLista[j] .. '[[' .. CategoriaElemento .. ']]'
        		else
        			ElementosLista[j] = ElementosLista[j] .. '[[' .. CategoriaElemento .. '|' .. ordenar .. ']]'	
        		end
        	end
        end
	  end
 
	  i = i + 1;
    end
 
    return ElementosLista
end
-- lista con los elementos separados por comas
function listas.lista(frame)
	-- Obtener los elementos de la lista informados.
	local ElementosLista= listas.ObtenerElementosLista(frame)
	if not ElementosLista[1] then return end
 
	return mw.text.listToText(ElementosLista,', ',' y ')
end
 
function listas.listahtml(frame)
    local parent     = frame:getParent();	
 
	-- Obtener los elementos de la lista informados delimitándolos con 
	local ElementosLista= listas.ObtenerElementosLista(frame)
	if not ElementosLista[1] then return end
 
    -- Añadir a los elementos de la lista <li> y </li>	
    local i = 1;
    while ElementosLista[i] do
      ElementosLista[i] = '<li>' .. ElementosLista[i] .. '</li>'	
      i = i + 1;
    end 
    -- Añadir la clase en su caso
    local clase = frame.args.clase or parent.args.clase
    if clase then
      return '<div' .. ' class="' .. clase ..'">' .. '<ul>' .. table.concat( ElementosLista ) .. '</ul></div>'
    else
      --Devolver la lista
	  return '<ul>' .. table.concat( ElementosLista ) .. '</ul>'    	
    end
end
 
return listas