Este módulo está na categoria sujeitos a prote??o de página. Ele é um módulo de alta visibilidade em uso por um grande número de páginas, ou é transcluído muito frequentemente. Por causa do vandalismo ou erros que podem afectar muitas páginas, e mesmo edi??es triviais podem causar cargas substanciais nos servidores, ele está protegido de editar.
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|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
Parametros 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 parametro 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 parametro 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 parametro.
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 parametro |style=.
item_style – um estilo de CSS personalizado para todos os itens da lista (as marca??es <li>...</li>). O formato é o mesmo do parametro |style=.
item1_style, item2_style, item3_style... – estilos de CSS personalizados para cada um dos itens da lista. O formato é o mesmo do parametro |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 parametro 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 parametros 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 parametros 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