Ten moduł generuje różnego rodzaju listy. Obecnie obsługuje listy wypunktowane, listy niepunktowane, listy poziome, listy uporządkowane (numerowane lub alfabetyczne) oraz listy uporządkowane w poziomie. Pozwala na łatwe stylizowanie css listy lub poszczególnych pozycji listy.
{{#invoke:Brudnopis/Persino/List|funkcja
|pierwszy przedmiot|drugi przedmiot|trzeci przedmiot|...
|zacznij = numer początkowy dla uporządkowanych list
|typ = typ operacji dla uporządkowanych list
|typ stylu listy = rodzaj numeracji list uporządkowanych
|klasy = klasy
|styl = style
|styl listy = style dla list
|styl pozycji = styl dla wszystkich elementów listy
|styl pozycji 1 = styl dla pierwszego elementu listy |styl pozycji 2 = styl dla drugiego elementu listy |...
|wartość pozycji 1 = wartość dla pierwszego elementu listy |wartość pozycji 2 = wartość dla drugiego elementu listy |...
|wcięcie = wcięcie dla list poziomych
}}
Parametry pozycyjne (1, 2, 3...) - to są elementy listy. Jeśli nie ma żadnych elementów listy, moduł nic nie wyświetli.
zacznij - ustawia pozycję początkową dla uporządkowanych list. Może to być numer początkowy dla list numerowanych lub litera początkowa dla list alfabetycznych. Poziome uporządkowane listy obsługują tylko liczby.
typ - rodzaj znacznika stosowanego na listach uporządkowanych. Możliwe wartości to „1” dla liczb (domyślnie), „A” dla wielkich liter, „a” dla małych liter, „I” dla wielkich liter Rzymski system zapisywania liczb oraz „i” dla małych cyfr rzymskich. Nieobsługiwane w poziomych listach uporządkowanych. Zobacz także parametr typ stylu listy.
typ stylu listy - rodzaj znacznika stosowanego na listach uporządkowanych. Wykorzystuje styl CSS i ma więcej dostępnych typów niż parametr typ, który wykorzystuje html. Możliwe wartości są wymienione na MDN's list-style-type page. Obsługa może się różnić w zależności od przeglądarki. typ-stylu-listy jest aliasem dla tego parametru.
klasy - klasa niestandardowa dla tagów < div>...</ div> otaczających listę, np. zwykłe linki.
styl - niestandardowy styl css dla tagów < div>...</ div> otaczających listę, np. font-size: 90%;.
styl listy - niestandardowy styl css dla samej listy.
styl pozycji - niestandardowy styl css dla wszystkich elementów listy (tagi < li>...</ li>).
styl pozycji 1, styl pozycji 2, styl pozycji 3... - niestandardowe style css dla każdego elementu listy.
wartość pozycji 1, wartość pozycji 2, wartość pozycji 3... - wartość niestandardowa dla podanego elementu listy. Elementy listy następujące po danym zwiększają się od określonej wartości. Wartość powinna być dodatnią liczbą całkowitą. (Pamiętaj, że ta opcja ma wpływ tylko na listy uporządkowane).
wcięcie - ten parametr wcina listę, tylko dla list poziomych i uporządkowanych poziomo. Wartość musi być liczbą, np. 2. Wcięcie jest obliczane w jednostakch w typografii, czyli Em, i jest 1,6 razy większe niż określona wartość. Jeśli nie określono wcięcia, wartością domyślną jest zero.
{{#invoke:Brudnopis/Persino/List|wypunktowany|Pierwszy poziom|Drugi poziom|Trzeci poziom|styl pozycji 1=background-color:yellow;|styl pozycji 2=background-color:silver;}}
{{#invoke:Brudnopis/Persino/List|niewypunktowany|Pierwszy poziom|Drugi poziom|Trzeci poziom|styl pozycji 1=background-color:yellow;|styl pozycji 2=background-color:silver;}}
-- This module outputs different kinds of lists. At the moment, bulleted,-- unbulleted, horizontal, ordered, and horizontal ordered lists are supported.locallibUtil=require('libraryUtil')localcheckType=libUtil.checkTypelocalmTableTools=require('Module:TableTools')localp={}locallistTypes={['wypunktowany']=true,['niewypunktowany']=true,['poziomy']=true,['uporządkowany']=true,['poziomo uporządkowany']=true}functionp.makeListData(listType,args)-- Constructs a data table to be passed to p.renderList.localdata={}-- Classesdata.classes={}iflistType=='poziomy'orlistType=='poziomo uporządkowany'thentable.insert(data.classes,'hlist hlist-separated')elseiflistType=='niewypunktowany'thentable.insert(data.classes,'plainlist')endtable.insert(data.classes,args.klasy)-- Main div styledata.style=args.styl-- Indent for horizontal listsiflistType=='poziomy'orlistType=='poziomo uporządkowany'thenlocalindent=tonumber(args['wcięcie'])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=='uporządkowany'orlistType=='poziomo uporządkowany'thendata.listStyleType=args['typ stylu listy']orargs['typ-stylu-listy']data.type=args['typ']-- 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=='uporządkowany'orlistType=='poziomo uporządkowany'thendata.listTag='ol'elsedata.listTag='ul'end-- Start number for ordered listsdata.start=args.zacznijiflistType=='poziomo uporządkowany'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['styl listy']-- List items-- li_style is included for backwards compatibility. item_style was included-- to be easier to understand for non-coders.data.itemStyle=args['styl pozycji']orargs['styl li']data.items={}fori,numinipairs(mTableTools.numKeys(args))dolocalitem={}item.content=args[num]item.style=args['styl pozycji '..tostring(num)]item.value=args['wartość pozycji '..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')fori,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 itemsfori,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)endreturntostring(root)endfunctionp.makeList(listType,args)ifnotlistTypeornotlistTypes[listType]thenerror(string.format("zły argument #1 do funckji 'makeList' ('%s' nie jest prawidłowym typem listy)",tostring(listType)),2)endcheckType('makeList',2,args,'table')localdata=p.makeListData(listType,args)locallist=p.renderList(data)returnlistendforlistTypeinpairs(listTypes)dop[listType]=function(frame)localmArguments=require('Module:Arguments')localorigArgs=mArguments.getArgs(frame,{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