Favicon Vikidia.png
¡Vikidia te necesita!Face-wink.svg
Corazón.svg

Actualmente tenemos 6500 artículos. ¡Anímate! Face-smile.svg a crear los artículos solicitados

Módulo:Lista

De Vikidia
Ir a la navegación Ir a la búsqueda
Test Template Info-Icon - Version (2).svg Documentación de módulo

Este módulo permite crear listas con diversos estilos, sin modificar el marcado HTML.

Funciones

Lista(table args)

Crea una lista HTML, con los valores pasados en la secuencia args. La estructura de dicha tabla es la siguiente:

Parámetro Descripción
string Tipo Puede tomar dos valores: v para vertical, o h para horizontal.
string Separador Una cadena de texto para ser usada como separador.
string Conjunción Ídem del anterior.
table Elementos Una secuencia de cadenas, que contiene los elementos a incluir en la lista.

Retorna una cadena HTML con un elemento <ul>.

_Lista(frame frame)

Interfaz wikitexto. Es usada por {{Lista}}. Retorna lo devuelto por Lista.

Variables

table formatos

Contiene tablas de 3 elementos con formatos predefinidos para usar.

Esta documentación se encuentra en la subpágina Módulo:Lista/doc (editar | historial)
Por favor, incluye las categorías a la subpágina /doc. Subpáginas de este módulo.

local z = {}
local argumentos = mw.getCurrentFrame():getParent().args

z.formatos = {
  ['natural'] = {'h',', ', ' y '},
  ['viñeta'] = {'h',' • ', ' • '},
  ['plana'] = {'v','', ''},
}

function z.Lista(args)
  local ul = mw.html.create('ul')
  if args[1] == 'v' then
    ul:attr('class', 'listav')
    ul:cssText("--sep:'"..args[2].."';")
    for i, v in ipairs(args[4]) do
      local li = ul:tag('li')
      li:wikitext(v)
    end
  elseif args[1] == 'h' then
    ul:attr('class', 'listah')
    for i, v in ipairs(args[4]) do
      local li = ul:tag('li')
      if i == #args[4] then
        li:cssText("--sep:'"..args[3].."';")
      else
        li:cssText("--sep:'"..args[2].."';")
      end
      li:wikitext(v)
    end
  else
    error('Se debe especificar un tipo de lista válido.')
  end
  return tostring(ul)
end

function z._Lista(frame)
  local formato
  if z.formatos[argumentos.formato] then
    formato = z.formatos[argumentos.formato]
  elseif argumentos.tipo and argumentos.sep then
    formato = {argumentos.tipo, argumentos.sep, argumentos.conj or argumentos.sep}
  else
    formato = z.formatos['natural']
  end
  formato[4] = {}
  for i, v in ipairs(argumentos) do
    table.insert(formato[4], v)
  end
  return z.Lista(formato)
end

return z