Modulis:InfoboxBuilder/Helpers

Vikipēdijas lapa
Dokumentācijas ikona Moduļa dokumentācija[izveidot]
local p = {}

-- test : librairie de lignes usuelles, pourraient aller dans un module séparé

function p.buildStyleTable( data)
	local res = {}
	local n = table.getn(data)
	
	if n % 2 == 0 then
		for i = 1, n/2 do
			res[i] = data[i*2-1] .. ': ' .. data[i*2]
		end
	else
		-- message d'erreur indiquant qu'il y a des données en trop ou pas assez
	end
	
    return res
end

function p.mixed(_label, _param, _property)
    local value = { type = 'mixed', label = _label, value = _param }
    if _property ~= nil then
        value.property = _property
    end
    return value
end

-- version paramètres nommés
function p.mixed_n(args)
    local res = { type = 'mixed' }
    -- on insère les éléments (les autres sont 'nil')
    for key, value in pairs(args) do
        res[key] = value
    end
    -- gestion des valeurs par défaut
    if (res["value"] == nil and type(res["label"] == "string")) then
        -- on utilise le label en minuscule
        res["value"] = mw.ustring.lower(res["label"])
    end

    return res
end

function p.doubled_n(args)
    local res = { type = 'doubled' }
    -- on insère les éléments (les autres sont 'nil')
    for key, value in pairs(args) do
        res[key] = value
    end
    -- gestion des valeurs par défaut
    if (res["value"] == nil and type(res["label"] == "string")) then
        -- on utilise le label en minuscule
        res["value"] = mw.ustring.lower(res["label"])
    end

    return res
end

function p.title(_icon, _back, _param)
    return { type = 'title', icon = _icon, background = _back, value = _param }
end

function p.title_n(args)
    local res = { type = 'title' }
    -- on insère les éléments (les autres sont 'nil')
    for key, value in pairs(args) do
        res[key] = value
    end

    return res
end

function p.table(_class, ...)
    return { type = 'table', class = _class, rows = { ... } }
end

function p.table_t(_class, _title, ...)
    return { type = 'table', class = _class, text = _title, rows = { ... } }
end

function p.table_n(args)
    local res = { type = 'table' }
    -- on insère les éléments (les autres sont 'nil')
    for key, value in pairs(args) do
        if (tonumber(key) == nil) then
            res[key] = value -- seulement les paramètres nommés
        end
    end
    -- pour permettre de mettre les "rows" à la fin, en non nommé, si besoin
    if (res["rows"] == nil and args[1] ~= nil) then
        res["rows"] = args[1]
    end
    return res
end

return p