Este módulo gera vários tipos de listas. Atualmente, ele suporta listas com marcadores, listas sem marcadores, listas horizontais, listas ordenadas (numeradas ou alfabéticas) e listas ordenadas horizontais. Ele permite um estilo de CSS fácil de lista ou de itens individuais da lista.
{{#invoke:Lista/Testes|função
|primeiro item|segundo item|terceiro item|...
|start = número inicial para listas ordenadas
|type = tipo de numeração para listas ordenadas
|list_style_type = tipo de marcador para listas ordenadas (usa CSS)
|class = classe
|style = style
|list_style = estilo para a lista
|item_style = estilo para todos os itens da lista
|item1_style = estilo para o primeiro item da lista |item2_style = estilo para o segundo item da lista |...
|item1_value = valor para o primeiro item da lista |item2_value = valor para o segundo item da lista |...
|indent = indentação para listas horizontais
}}
Argumentos passados a partir da predefinição parental
Parâmetros posicionais (1, 2, 3...) – estes são os itens da lista. Se nenhum item da lista estiver presente, o módulo não produzirá nada.
start – define o item inicial para listas ordenadas. Pode ser um número inicial para listas numeradas ou uma letra inicial para listas alfabéticas. Listas ordenadas horizontais suportam apenas números.
type – o tipo de marcador usado em listas ordenadas. Os valores possíveis são "1" para números (o padrão), "A" para letras maiúsculas, "a" para letras minúsculas, "I" para algarismos romanos maiúsculos e "i" para algarismos romanos minúsculos. Não suportado em listas ordenadas horizontais. Veja também o parâmetro list_style_type.
list_style_type – o tipo de marcador usado em listas ordenadas. Isso usa estilo de CSS e tem mais tipos disponíveis do que o parâmetro type, que usa um atributo de HTML [en]. Os valores possíveis estão listados na página de tipo de estilo de lista da MDN (em inglês). O suporte pode variar de acordo com o navegador. list-style-type é um nome alternativo para este parâmetro.
class – uma classe personalizada para as marcações <div>...</div> ao redor da lista, plainlinkspor exemplo.
style – um estilo de CSS personalizado para as marcações <div>...</div> ao redor da lista, por exemplo font-size: 90%;.
list_style – um estilo de CSS personalizado para a própria lista. O formato é o mesmo do parâmetro |style=.
item_style – um estilo de CSS personalizado para todos os itens da lista (as marcações <li>...</li>). O formato é o mesmo do parâmetro |style=.
item1_style, item2_style, item3_style... – estilos de CSS personalizados para cada um dos itens da lista. O formato é o mesmo do parâmetro |style=.
item1_value, item2_value, item3_value... – valor personalizado para o item de lista fornecido. Os itens da lista após aquele fornecido serão incrementados a partir do valor especificado. O valor deve ser um número inteiro positivo. (Observe que esta opção só tem efeito em listas ordenadas.)
indent – este parâmetro indenta a lista, apenas para listas ordenadas horizontais e horizontais. O valor deve ser um número, por exemplo, 2. A indentação é calculada em em e é 1,6 vezes o valor especificado. Se nenhuma indentação for especificada, o padrão será zero.
locallibUtil=require('libraryUtil')localcheckType=libUtil.checkTypelocalmTableTools=require('Módulo:TableTools')localp={}locallistTypes={['bulleted']=true,['unbulleted']=true,['horizontal']=true,['ordered']=true,['horizontal_ordered']=true}functionp.makeListData(listType,args)-- Constrói uma tabela de dados para ser passada para p.renderList.localdata={}-- Classes e TemplateStylesdata.classes={}data.templatestyles=''iflistType=='horizontal'orlistType=='horizontal_ordered'thentable.insert(data.classes,'hlist')data.templatestyles=mw.getCurrentFrame():extensionTag{name='templatestyles',args={src='Hlist/styles.css'}}elseiflistType=='unbulleted'thentable.insert(data.classes,'plainlist')data.templatestyles=mw.getCurrentFrame():extensionTag{name='templatestyles',args={src='Lista simples/styles.css'}}endlocalargsClass=args.classorargs.classetable.insert(data.classes,argsClass)-- Estilo div principaldata.style=args.styleorargs.estilo-- Indentação para listas horizontaisiflistType=='horizontal'orlistType=='horizontal_ordered'thenlocalindentifargs.indentthenindent=tonumber(args.indent)elseindent=tonumber(args.indentar)endindent=indentandindent*1.6or0ifindent>0thendata.marginLeft=indent..'em'endend-- Tipos de estilo de lista para listas ordenadas.-- Isto pode ser "1, 2, 3", "a, b, c" ou vários outros. O tipo de estilo de -- lista é definido pelo atributo "type" ou pela propriedade de CSS-- "list-style-type".iflistType=='ordered'orlistType=='horizontal_ordered'thendata.listStyleType=args.list_style_typeorargs['list-style-type']orargs.lista_estilo_tipoorargs['lista-estilo-tipo']data.type=args['type']orargs['tipo']-- Detecta atributos de tipo inválidos e tenta convertê-los em-- propriedades de CSS de list-style-type.ifdata.typeandnotdata.listStyleTypeandnottostring(data.type):find('^%s*[1AaIi]%s*$')thendata.listStyleType=data.typedata.type=nilendend-- Tipo de tag de listaiflistType=='ordered'orlistType=='horizontal_ordered'thendata.listTag='ol'elsedata.listTag='ul'end-- Número inicial para listas ordenadasdata.start=args.startorargs['início']iflistType=='horizontal_ordered'then-- Aplica correção para fazer com que os números iniciais funcionem com-- listas ordenadas horizontais.localstartNum=tonumber(data.start)ifstartNumthendata.counterReset='listitem '..tostring(startNum-1)endend-- Estilo de lista -- ul_style e ol_style estão incluídos para compatibilidade com versões -- anteriores. Nenhuma distinção é feita para listas que são ordenadas ou -- que não são ordenadas.data.listStyle=args.list_styleorargs.lista_estilo-- Lista de itens-- li_style está incluído para compatibilidade com versões anteriores.-- item_style foi incluído para ser mais fácil de entender para os que não-- são programadores.data.itemStyle=args.item_styleorargs.li_styleorargs.item_estiloorargs.li_estilodata.items={}for_,numinipairs(mTableTools.numKeys(args))dolocalitem={}item.content=args[num]item.style=args['item'..tostring(num)..'_style']orargs['item_style'..tostring(num)]orargs['item'..tostring(num)..'_estilo']orargs['item_estilo'..tostring(num)]item.value=args['item'..tostring(num)..'_value']orargs['item_value'..tostring(num)]orargs['item'..tostring(num)..'_valor']orargs['item_valor'..tostring(num)]table.insert(data.items,item)endreturndataendfunctionp.renderList(data)-- Renderiza a lista em HTML.-- Retorna a sequência (string) em branco se não houver itens na lista.iftype(data.items)~='table'or#data.items<1thenreturn''end-- Renderiza a tag div principal.localroot=mw.html.create('div')for_,classinipairs(data.classesor{})doroot:addClass(class)endroot:css{['margin-left']=data.marginLeft}ifdata.stylethenroot:cssText(data.style)end-- Renderiza a tag da lista.locallist=root:tag(data.listTagor'ul')list:attr{start=data.start,type=data.type}:css{['counter-reset']=data.counterReset,['list-style-type']=data.listStyleType}ifdata.listStylethenlist:cssText(data.listStyle)end-- Renderiza os itens da listafor_,tinipairs(data.itemsor{})dolocalitem=list:tag('li')ifdata.itemStylethenitem:cssText(data.itemStyle)endift.stylethenitem:cssText(t.style)enditem:attr{value=t.value}:wikitext(t.content)endreturndata.templatestyles..tostring(root)endfunctionp.renderTrackingCategories(args)localisDeprecated=false-- Rastreia parâmetros obsoletos.fork,vinpairs(args)dok=tostring(k)ifk:find('^item_style%d+$')ork:find('^item_value%d+$')thenisDeprecated=truebreakendendlocalret=''ifisDeprecatedthenret=ret..'[[Categoria:!Predefinições de lista com parâmetros obsoletos]]'endreturnretendfunctionp.makeList(listType,args)ifnotlistTypeornotlistTypes[listType]thenerror(string.format("argumento #1 inválido para 'makeList' ('%s' não é um tipo de lista válido)",tostring(listType)),2)endcheckType('makeList',2,args,'table')localdata=p.makeListData(listType,args)locallist=p.renderList(data)localtrackingCategories=p.renderTrackingCategories(args)returnlist..trackingCategoriesendforlistTypeinpairs(listTypes)dop[listType]=function(frame)localmArguments=require('Módulo:Arguments')localorigArgs=mArguments.getArgs(frame,{valueFunc=function(key,value)ifnotvalueornotmw.ustring.find(value,'%S')thenreturnnilendifmw.ustring.find(value,'^%s*[%*#;:]')thenreturnvalueelsereturnvalue:match('^%s*(.-)%s*$')endreturnnilend})-- Copia todos os argumentos para uma nova tabela, para uma indexação -- mais rápida.localargs={}fork,vinpairs(origArgs)doargs[k]=vendreturnp.makeList(listType,args)endendreturnp