Toggle menu
70
349
24
3.8K
Global Countryball Organization
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Repeat

From Global Countryball Organization

Documentation for this module may be created at Module:Repeat/doc

local utils = {}

function utils.big(frame)
    local elm = frame.args[1] or frame:getParent().args[1]
    local arg2 = frame.args[2] or frame:getParent().args[2]
    local x = tonumber(arg2)
    for i=1,x do 
        elm = "<big>" .. elm .. "</big>"
    end
    return elm
end

function utils.same(frame)
    local elm = frame.args[1] or frame:getParent().args[1]
    local arg2 = frame.args[2] or frame:getParent().args[2]
    local x = tonumber(arg2)
    local elm2 = elm
    for i=2,x do 
        elm2 = elm2 .. elm
    end
    return elm2
end

function utils.gradient(frame)
    local count1 = 2
    local count2 = 2
    local tab1 = frame.args[2]
    local tab2 = frame:getParent().args[2]
    local direction = frame.args[1] or frame:getParent().args[2]
    local arglist
    local argcount
    local range 
    while tab1 ~= nil do
        tab1 = frame.args[count1]
        count1 = count1 + 1
    end
    while tab2 ~= nil do
        tab2 = frame:getParent().args[count2]
        count2 = count2 + 1
    end
    if count1 >= count2 then
        arglist = frame.args
        argcount = count1 - 2
    else
        arglist = frame:getParent().args
        argcount = count2 - 2
    end
    range = arglist[2] .. ", "
    for i=2,(argcount-1) do
        local x = string.format("%.1f",100 * ((i-1)/(argcount-1))).. "% "
        range = range .. arglist[i] .. " ".. x .. ", "
        range = range .. arglist[i + 1] .. " " .. x .. ", "
    end
    range = range .. arglist[argcount] .. " 100%"
    return "linear-gradient(to "..direction..", ".. range ..") no-repeat"
end

function utils.parentGradient(frame)
    local count = 1
    local args = frame:getParent().args
    local direction = args["direction"]
    local param = args[1]
    while param ~= nil do
        count = count + 1
        param = args[count] 
    end
    local range = args[1] .. ", "
    for i=1,(count-2) do
        local x = string.format("%.1f",100 * ((i)/(count-1))).. "% "
        range = range .. args[i] .. " ".. x .. ", "
        range = range .. args[i + 1] .. " " .. x .. ", "
    end
    range = range .. args[count-1] .. " 100%"
    return "linear-gradient(to "..direction..", ".. range ..") no-repeat"
end

function utils.shadow(frame)
    local color = frame.args[1] or frame:getParent().args[1] or "#000"
    local x = {1,-1,-1,1,0,1,0,-1}
    local y = {1,1,-1,-1,-1,0,1,0}
    local tab = {}
    for i=1,8 do 
        tab[i] = tostring(x[i]) .. "px " .. tostring(y[i]) .. "px " .. color
    end
    return table.concat(tab,",")
end

return utils