mNie podano opisu zmian Znacznik: sourceedit |
Nie podano opisu zmian Znacznik: sourceedit |
||
Linia 1: | Linia 1: | ||
local L = {} |
local L = {} |
||
local getArgs = require('Dev:Arguments').getArgs |
local getArgs = require('Dev:Arguments').getArgs |
||
− | mw.log('Moduł:Lista') |
||
function cleanup(list) |
function cleanup(list) |
Aktualna wersja na dzień 05:52, 6 wrz 2017
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Lista/opis
local L = {}
local getArgs = require('Dev:Arguments').getArgs
function cleanup(list)
local set, keys = {}, {}
for i,v in ipairs(list) do
v = mw.text.trim(v or '')
if v ~= '' and not keys[v] then
table.insert(set, v)
keys[v] = true
end
end
return set
end
L._cleanup = cleanup
local cb = 0
function counters(list, prefix)
local frame = mw.getCurrentFrame()
if frame and frame.preprocess then
cb = cb + 1
prefix = prefix or 'counter'
for i,v in ipairs(list) do
local varname = mw.ustring.format('%s-%s', prefix, v)
frame:preprocess(mw.ustring.format('{{#vardefine: %s | {{#expr: {{#var: %s | 0 }} + 1}} }}', varname, varname) .. cb)
end
end
end
L._counters = counters
local formats = require('Module:Lista/formaty')
function L.format(frame)
local args = getArgs(frame, { parentFirst = true })
local list = mw.text.trim(frame.args and frame.args['Lista'] or args['Lista'] or '')
local format = mw.text.trim(args['format'] or ''):lower()
list = cleanup(mw.text.split(list, '%s*[,;\n]+%s*'))
if #list == 0 then return '<span class="error">Lista jest pusta</span>' end
if format == '' then return '<span class="error">Należy podać format</span>' end
if formats[format] == nil then return '<span class="error">Taki format [[Module:Lista/formaty|nie istnieje]]</span>' end
if args['sort'] then table.sort(list) end
if args['counters'] then counters(list) end
return formats[format](list, args)
end
return L