Nie podano opisu zmian Znacznik: sourceedit |
mNie podano opisu zmian Znacznik: sourceedit |
||
Linia 20: | Linia 20: | ||
local frame = mw.getCurrentFrame() |
local frame = mw.getCurrentFrame() |
||
if frame and frame.preprocess then |
if frame and frame.preprocess then |
||
⚫ | |||
prefix = prefix or 'counter' |
prefix = prefix or 'counter' |
||
for i,v in ipairs(list) do |
for i,v in ipairs(list) do |
||
local varname = mw.ustring.format('%s-%s', prefix, v) |
local varname = mw.ustring.format('%s-%s', prefix, v) |
||
frame:preprocess(mw.ustring.format('{{#vardefine: %s | {{#expr: {{#var: %s | 0 }} + 1}} }}', varname, varname) .. cb) |
frame:preprocess(mw.ustring.format('{{#vardefine: %s | {{#expr: {{#var: %s | 0 }} + 1}} }}', varname, varname) .. cb) |
||
⚫ | |||
end |
end |
||
end |
end |
Wersja z 05:22, 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
mw.log('Moduł:Lista')
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