Ezen modul segítségével különféle listákat lehet létrehozni. Jelenleg támogatja a felsorolásos, a felsorolás nélküli, a vízszintes, a számozott (szám, vagy betű) és a vízszintes rendezett listákat. Lehetővé teszi listák vagy lita elemek egyszerű css formázását.
{{#invoke:lista|function
|első elem|második elem|harmadik elem|...
|start = számozott lista számozásának kezdete
|type = rendezett lista számozásának típusa
|list_style_type = rendezett lista jelzési fajtája (CSS)
|class = osztály
|style = stílus
|list_style = lista stílusa
|item_style = az összes listaelem stílusa
|item1_style = a lista első elemének stílusa |item2_style = a lista második elemének stílusa |...
|item1_value = az első listaelem értéke |item2_value = a második listaelem értéke |...
|indent = vízszintes listák behúzása
}}
locallibUtil=require('libraryUtil')localcheckType=libUtil.checkTypelocalmTableTools=require('Module:TableTools')localp={}locallistTypes={['bulleted']=true,['unbulleted']=true,['horizontal']=true,['ordered']=true,['horizontal_ordered']=true}functionp.makeListData(listType,args)-- Constructs a data table to be passed to p.renderList.localdata={}-- Classes and 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='Plainlist/styles.css'}}endtable.insert(data.classes,args.class)-- Main div styledata.style=args.style-- Indent for horizontal listsiflistType=='horizontal'orlistType=='horizontal_ordered'thenlocalindent=tonumber(args.indent)indent=indentandindent*1.6or0ifindent>0thendata.marginLeft=indent..'em'endend-- List style types for ordered lists-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style-- type is either set by the "type" attribute or the "list-style-type" CSS-- property.iflistType=='ordered'orlistType=='horizontal_ordered'thendata.listStyleType=args.list_style_typeorargs['list-style-type']data.type=args['type']-- Detect invalid type attributes and attempt to convert them to-- list-style-type CSS properties.ifdata.typeandnotdata.listStyleTypeandnottostring(data.type):find('^%s*[1AaIi]%s*$')thendata.listStyleType=data.typedata.type=nilendend-- List tag typeiflistType=='ordered'orlistType=='horizontal_ordered'thendata.listTag='ol'elsedata.listTag='ul'end-- Start number for ordered listsdata.start=args.startiflistType=='horizontal_ordered'then-- Apply fix to get start numbers working with horizontal ordered lists.localstartNum=tonumber(data.start)ifstartNumthendata.counterReset='listitem '..tostring(startNum-1)endend-- List style-- ul_style and ol_style are included for backwards compatibility. No-- distinction is made for ordered or unordered lists.data.listStyle=args.list_style-- List items-- li_style is included for backwards compatibility. item_style was included-- to be easier to understand for non-coders.data.itemStyle=args.item_styleorargs.li_styledata.items={}for_,numinipairs(mTableTools.numKeys(args))dolocalitem={}item.content=args[num]item.style=args['item'..tostring(num)..'_style']orargs['item_style'..tostring(num)]item.value=args['item'..tostring(num)..'_value']orargs['item_value'..tostring(num)]table.insert(data.items,item)endreturndataendfunctionp.renderList(data)-- Renders the list HTML.-- Return the blank string if there are no list items.iftype(data.items)~='table'or#data.items<1thenreturn''end-- Render the main div tag.localroot=mw.html.create('div')for_,classinipairs(data.classesor{})doroot:addClass(class)endroot:css{['margin-left']=data.marginLeft}ifdata.stylethenroot:cssText(data.style)end-- Render the list tag.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-- Render the list itemsfor_,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-- Tracks deprecated parameters.fork,vinpairs(args)dok=tostring(k)ifk:find('^item_style%d+$')ork:find('^item_value%d+$')thenisDeprecated=truebreakendendlocalret=''ifisDeprecatedthenret=ret..'[[Category:List templates with deprecated parameters]]'endreturnretendfunctionp.makeList(listType,args)ifnotlistTypeornotlistTypes[listType]thenerror(string.format("bad argument #1 to 'makeList' ('%s' is not a valid list type)",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('Module:Arguments')localorigArgs=mArguments.getArgs(frame,{frameOnly=((frameandframe.argsandframe.args.frameonlyor'')~=''),valueFunc=function(key,value)ifnotvalueornotmw.ustring.find(value,'%S')thenreturnnilendifmw.ustring.find(value,'^%s*[%*#;:]')thenreturnvalueelsereturnvalue:match('^%s*(.-)%s*$')endreturnnilend})-- Copy all the arguments to a new table, for faster indexing.localargs={}fork,vinpairs(origArgs)doargs[k]=vendreturnp.makeList(listType,args)endendreturnp