Module:Utilities: Difference between revisions

m Added expand_templates util to help optimise template expansions
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 111: Line 111:
local slot_colors = {
local slot_colors = {
["Weapon"] = {
["Weapon"] = {
hex = "c97a03",
hex = "c8761c",
rgb = "201,122,3",
rgb = "200, 118, 28",
hsl = "35,97%,40%",
hsl = "31, 75%, 45%",
cmyk = "0%,39%,98%,21%"
cmyk = "0%, 41%, 86%, 22%"
},
},
["Armor"] = {
["Armor"] = {
hex = "659818",
hex = "6f8724",
rgb = "101,152,24",
rgb = "198, 248, 114",
hsl = "82,73%,34%",
hsl = "82, 91%, 71%",
cmyk = "34%,0%,84%,40%"
cmyk = "20%, 0%, 54%, 3%"
},
},
["Tech"] = {
["Tech"] = {
hex = "c288f0", -- purple
hex = "ba5ca6",
rgb = "194,136,240",
rgb = "186, 92, 166",
hsl = "276,79%,74%",
hsl = "313, 41%, 55%",
cmyk = "19%,43%,0%,6%"
cmyk = "0%, 51%, 11%, 27%"
}
}


Line 237: Line 237:


-- Expands multiple of the same template in a single preprocess call
-- Expands multiple of the same template in a single preprocess call
function p.expand_templates(frame, template_name, args_array)
-- Example:
-- expand_teampltes(frame, 'HeroIcon', {hero_atlas: {'Abrams'}, hero_bebop: {'Bebop'})
-- Returns {hero_atlas: <abrams_icon_template>, hero_bebop: <bebop_icon_template>, ...}
function p.expand_templates(frame, template_name, args_map)
    local keys = {}
     local strings = {}
     local strings = {}
     for i, args in ipairs(args_array) do
    for key, args in pairs(args_map) do
        keys[#keys + 1] = key
    end
     for i, key in ipairs(keys) do
        local args = args_map[key]
         local parts = {"{{", template_name, "|"}
         local parts = {"{{", template_name, "|"}
         for j, arg in ipairs(args) do
         for j, arg in ipairs(args) do
Line 248: Line 256:
         strings[i] = table.concat(parts)
         strings[i] = table.concat(parts)
     end
     end
     local expanded = frame:preprocess(table.concat(strings, "\x01"))
     local expanded = mw.text.split(
     return mw.text.split(expanded, "\x01")
        frame:preprocess(table.concat(strings, "\x01")), "\x01"
    )
    local result = {}
    for i, key in ipairs(keys) do
        result[key] = expanded[i]
    end
     return result
end
 
-- Helper function
-- Returns true or false depending if the page exist
function p.page_exists(title_text)
    local title_obj = mw.title.new(title_text)
    return title_obj and title_obj.exists or false
end
end


return p
return p