League of Legends Wiki
League of Legends Wiki
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