Module:Color: Difference between revisions
Jump to navigation
Jump to search
ported get_slot_color from Utilities, now more generic and supports other key types |
m write_previews initial |
||
Line 3: | Line 3: | ||
-- Hash for color values | -- Hash for color values | ||
local colors_data = { | local colors_data = { | ||
[" | ["CitadelCategoryWeapon"] = { -- weapon | ||
hex = "c97a03", | hex = "c97a03", | ||
rgb = "201,122,3", | rgb = "201,122,3", | ||
Line 9: | Line 9: | ||
cmyk = "0%,39%,98%,21%" | cmyk = "0%,39%,98%,21%" | ||
}, | }, | ||
[" | ["CitadelCategoryArmor"] = { --vitality | ||
hex = "659818", | hex = "659818", | ||
rgb = "101,152,24", | rgb = "101,152,24", | ||
Line 15: | Line 15: | ||
cmyk = "34%,0%,84%,40%" | cmyk = "34%,0%,84%,40%" | ||
}, | }, | ||
[" | ["CitadelCategoryTech"] = { --spirit | ||
hex = "c288f0", -- purple | hex = "c288f0", -- purple | ||
rgb = "194,136,240", | rgb = "194,136,240", | ||
Line 33: | Line 33: | ||
cmyk = "100%,0%,40%,0%" | cmyk = "100%,0%,40%,0%" | ||
}, | }, | ||
[" | ["hero_atlas"] = { --abrams | ||
hex = "2193AE", | hex = "2193AE", | ||
rgb = "33,147,174", | rgb = "33,147,174", | ||
Line 39: | Line 39: | ||
cmyk = "81%,15%,0%,32%" | cmyk = "81%,15%,0%,32%" | ||
}, | }, | ||
[" | ["hero_wraith"] = { | ||
hex = "954E7A", | hex = "954E7A", | ||
rgb = "149,78,122", | rgb = "149,78,122", | ||
Line 45: | Line 45: | ||
cmyk = "0%,48%,18%,42%" | cmyk = "0%,48%,18%,42%" | ||
}, | }, | ||
[" | ["hero_viscous"] = { | ||
hex = "8AC365", | hex = "8AC365", | ||
rgb = "138,195,101", | rgb = "138,195,101", | ||
Line 51: | Line 51: | ||
cmyk = "29%,0%,48%,24%" | cmyk = "29%,0%,48%,24%" | ||
}, | }, | ||
[" | ["hero_orion"] = { --grey talon | ||
hex = "61B083", | hex = "61B083", | ||
rgb = "97,176,131", | rgb = "97,176,131", | ||
Line 57: | Line 57: | ||
cmyk = "45%,0%,26%,31%" | cmyk = "45%,0%,26%,31%" | ||
}, | }, | ||
[" | ["hero_hornet"] = { --vindicta | ||
hex = "87A8B8", | hex = "87A8B8", | ||
rgb = "135,168,184", | rgb = "135,168,184", | ||
Line 63: | Line 63: | ||
cmyk = "27%,9%,0%,28%" | cmyk = "27%,9%,0%,28%" | ||
}, | }, | ||
[" | ["hero_inferno"] = { --infernus | ||
hex = "FF472E", | hex = "FF472E", | ||
rgb = "253,71,46", | rgb = "253,71,46", | ||
Line 69: | Line 69: | ||
cmyk = "0%,72%,82%,1%" | cmyk = "0%,72%,82%,1%" | ||
}, | }, | ||
[" | ["hero_forge"] = { --mcginnis | ||
hex = "466A9C", | hex = "466A9C", | ||
rgb = "70,106,156", | rgb = "70,106,156", | ||
Line 75: | Line 75: | ||
cmyk = "55%,32%,0%,39%" | cmyk = "55%,32%,0%,39%" | ||
}, | }, | ||
[" | ["hero_haze"] = { | ||
hex = "AE6231", | hex = "AE6231", | ||
rgb = "174,98,49", | rgb = "174,98,49", | ||
Line 81: | Line 81: | ||
cmyk = "0%,44%,72%,32%" | cmyk = "0%,44%,72%,32%" | ||
}, | }, | ||
[" | ["hero_ghost"] = { --lady geist | ||
hex = "088A5C", | hex = "088A5C", | ||
rgb = "8,138,92", | rgb = "8,138,92", | ||
Line 87: | Line 87: | ||
cmyk = "94%,0%,33%,46%" | cmyk = "94%,0%,33%,46%" | ||
}, | }, | ||
[" | ["hero_mirage"] = { | ||
hex = "87683C", | hex = "87683C", | ||
rgb = "135,104,60", | rgb = "135,104,60", | ||
Line 93: | Line 93: | ||
cmyk = "0%,23%,56%,47%" | cmyk = "0%,23%,56%,47%" | ||
}, | }, | ||
[" | ["hero_lash"] = { | ||
hex = "444C57", | hex = "444C57", | ||
rgb = "68,76,87", | rgb = "68,76,87", | ||
Line 99: | Line 99: | ||
cmyk = "22%,13%,0%,66%" | cmyk = "22%,13%,0%,66%" | ||
}, | }, | ||
[" | ["hero_gigawatt"] = { --seven | ||
hex = "EC963F", | hex = "EC963F", | ||
rgb = "236,150,63", | rgb = "236,150,63", | ||
Line 105: | Line 105: | ||
cmyk = "0%,36%,73%,8%" | cmyk = "0%,36%,73%,8%" | ||
}, | }, | ||
[" | ["hero_yamato"] = { | ||
hex = "6F9181", | hex = "6F9181", | ||
rgb = "111,145,129", | rgb = "111,145,129", | ||
Line 111: | Line 111: | ||
cmyk = "23%,0%,11%,43%" | cmyk = "23%,0%,11%,43%" | ||
}, | }, | ||
[" | ["hero_warden"] = { | ||
hex = "566279", | hex = "566279", | ||
rgb = "86,98,121", | rgb = "86,98,121", | ||
Line 117: | Line 117: | ||
cmyk = "29%,19%,0%,53%" | cmyk = "29%,19%,0%,53%" | ||
}, | }, | ||
[" | ["hero_bebop"] = { | ||
hex = "A04835", | hex = "A04835", | ||
rgb = "160,72,53", | rgb = "160,72,53", | ||
Line 123: | Line 123: | ||
cmyk = "0%,55%,67%,37%" | cmyk = "0%,55%,67%,37%" | ||
}, | }, | ||
[" | ["hero_chrono"] = { --paradox | ||
hex = "993A53", | hex = "993A53", | ||
rgb = "153,58,83", | rgb = "153,58,83", | ||
Line 129: | Line 129: | ||
cmyk = "0%,62%,46%,40%" | cmyk = "0%,62%,46%,40%" | ||
}, | }, | ||
[" | ["hero_dynamo"] = { | ||
hex = "D0BA46", | hex = "D0BA46", | ||
rgb = "208,186,70", | rgb = "208,186,70", | ||
Line 135: | Line 135: | ||
cmyk = "0%,11%,66%,18%" | cmyk = "0%,11%,66%,18%" | ||
}, | }, | ||
[" | ["hero_shiv"] = { | ||
hex = "A53D88", | hex = "A53D88", | ||
rgb = "165,61,136", | rgb = "165,61,136", | ||
Line 177: | Line 177: | ||
if no_wrap == nil or no_wrap == 'false' or no_wrap == "" then no_wrap = false else no_wrap = true end | if no_wrap == nil or no_wrap == 'false' or no_wrap == "" then no_wrap = false else no_wrap = true end | ||
if debug_mode == nil or debug_mode == 'false' or debug_mode == "" then debug_mode = false end | if debug_mode == nil or debug_mode == 'false' or debug_mode == "" then debug_mode = false end | ||
if (key == "Weapon" or | |||
key == "Armor" or | |||
key == "Tech") then | |||
key = "CitadelCategory" .. key | |||
end | |||
local color_data = colors_data[slot] | local color_data = colors_data[slot] | ||
Line 203: | Line 210: | ||
end | end | ||
function p.list_keys(frame) | |||
local ret = '' | |||
for key, value in pairs(colors_data) do | |||
ret = ret .. key .. ", " | |||
end | |||
return frame:preprocess(ret) | |||
end | |||
function p.write_previews(frame) | |||
local ret = '' | |||
-- Add headers | |||
local headers = {"Key", "Hex Code", "Colored div", "Colored Text", "Colored Underline"} | |||
local header_row = "" | |||
for _, header in ipairs(headers) do | |||
header_row = header_row .. "<th>" .. header .. "</th>" | |||
end | |||
header_row = "<tr>" .. header_row .. "</tr>" | |||
-- Add values | |||
local rows = "" | |||
local row | |||
for key, value in pairs(colors_data) do | |||
local hex = value['hex'] | |||
row = '' | |||
row = row .. "<td>" .. key .. "</td>" | |||
row = row .. "<td>" .. "#" .. hex .. "</td>" | |||
row = row .. "<td>" .. "<div style=background-color:#" .. hex .. ";>" .. key .. "</div>" .. "</td>" | |||
row = row .. "<td>" .. "<span style=color:#" .. hex .. ";>" .. key .. "</span>" .. "</td>" | |||
row = row .. "<td>" .. '<span style="text-decoration: underline; text-decoration-color: #'..hex..';">' .. key .. "</span>" .. "</td>" | |||
rows = rows .. "<tr>" .. row .. "</tr>" | |||
end | |||
return "<table>" .. header_row .. rows .. "</table>" | |||
end | |||
return p | return p |
Revision as of 04:11, 2 November 2024
Overview
Color related functions for retrieving wiki-standardized colors
Functions
get_color
Retrieve's the color of a given key in any color format (default hex).
Parameters
- key - key, options are CitadelCategoryTech, hero_lash, CitadelCategoryWeapon, hero_mirage, hero_haze, hero_atlas, hero_inferno, hero_gigawatt, hero_yamato, hero_dynamo, hero_chrono, hero_bebop, Healing, hero_wraith, hero_orion, hero_shiv, hero_ghost, CitadelCategoryArmor, hero_warden, hero_hornet, hero_viscous, Souls, hero_forge,
- color_format - color format - Defaults to hex. Valid options are hex, rgb, hsl, cmyk
- no_wrap - (OPTIONAL) - Defaults to false. Set to true to remove prefixes and postfixes of '#' from hex, or 'rgb()', 'hsl()', and 'cmyk()' from the other formats. May be useful for altering the values dynamically
- debug_mode - (OPTIONAL) - Defaults to false. Used mostly for documentation purposes
Examples
See examples at Template:Color
Previews
Key | Hex Code | Colored div | Colored Text | Colored Underline |
---|---|---|---|---|
CitadelCategoryTech | #c288f0 | CitadelCategoryTech | CitadelCategoryTech | CitadelCategoryTech |
hero_lash | #444C57 | hero_lash | hero_lash | hero_lash |
CitadelCategoryWeapon | #c97a03 | CitadelCategoryWeapon | CitadelCategoryWeapon | CitadelCategoryWeapon |
hero_mirage | #87683C | hero_mirage | hero_mirage | hero_mirage |
hero_haze | #AE6231 | hero_haze | hero_haze | hero_haze |
hero_atlas | #2193AE | hero_atlas | hero_atlas | hero_atlas |
hero_inferno | #FF472E | hero_inferno | hero_inferno | hero_inferno |
hero_gigawatt | #EC963F | hero_gigawatt | hero_gigawatt | hero_gigawatt |
hero_yamato | #6F9181 | hero_yamato | hero_yamato | hero_yamato |
hero_dynamo | #D0BA46 | hero_dynamo | hero_dynamo | hero_dynamo |
hero_chrono | #993A53 | hero_chrono | hero_chrono | hero_chrono |
hero_bebop | #A04835 | hero_bebop | hero_bebop | hero_bebop |
Healing | #00FF9A | Healing | Healing | Healing |
hero_wraith | #954E7A | hero_wraith | hero_wraith | hero_wraith |
hero_orion | #61B083 | hero_orion | hero_orion | hero_orion |
hero_shiv | #A53D88 | hero_shiv | hero_shiv | hero_shiv |
hero_ghost | #088A5C | hero_ghost | hero_ghost | hero_ghost |
CitadelCategoryArmor | #659818 | CitadelCategoryArmor | CitadelCategoryArmor | CitadelCategoryArmor |
hero_warden | #566279 | hero_warden | hero_warden | hero_warden |
hero_hornet | #87A8B8 | hero_hornet | hero_hornet | hero_hornet |
hero_viscous | #8AC365 | hero_viscous | hero_viscous | hero_viscous |
Souls | #98ffde | Souls | Souls | Souls |
hero_forge | #466A9C | hero_forge | hero_forge | hero_forge |
local p = {}
-- Hash for color values
local colors_data = {
["CitadelCategoryWeapon"] = { -- weapon
hex = "c97a03",
rgb = "201,122,3",
hsl = "35,97%,40%",
cmyk = "0%,39%,98%,21%"
},
["CitadelCategoryArmor"] = { --vitality
hex = "659818",
rgb = "101,152,24",
hsl = "82,73%,34%",
cmyk = "34%,0%,84%,40%"
},
["CitadelCategoryTech"] = { --spirit
hex = "c288f0", -- purple
rgb = "194,136,240",
hsl = "276,79%,74%",
cmyk = "19%,43%,0%,6%"
},
["Souls"] = {
hex = "98ffde",
rgb = "152,255,222",
hsl = "162,100%,80%",
cmyk = "40%,0%,13%,0%"
},
["Healing"] = {
hex = "00FF9A",
rgb = "0,255,154",
hsl = "150,100%,50%",
cmyk = "100%,0%,40%,0%"
},
["hero_atlas"] = { --abrams
hex = "2193AE",
rgb = "33,147,174",
hsl = "193,68%,41%",
cmyk = "81%,15%,0%,32%"
},
["hero_wraith"] = {
hex = "954E7A",
rgb = "149,78,122",
hsl = "320,31%,44%",
cmyk = "0%,48%,18%,42%"
},
["hero_viscous"] = {
hex = "8AC365",
rgb = "138,195,101",
hsl = "98,47%,58%",
cmyk = "29%,0%,48%,24%"
},
["hero_orion"] = { --grey talon
hex = "61B083",
rgb = "97,176,131",
hsl = "145,32%,54%",
cmyk = "45%,0%,26%,31%"
},
["hero_hornet"] = { --vindicta
hex = "87A8B8",
rgb = "135,168,184",
hsl = "202,28%,63%",
cmyk = "27%,9%,0%,28%"
},
["hero_inferno"] = { --infernus
hex = "FF472E",
rgb = "253,71,46",
hsl = "7,98%,59%",
cmyk = "0%,72%,82%,1%"
},
["hero_forge"] = { --mcginnis
hex = "466A9C",
rgb = "70,106,156",
hsl = "215,38%,44%",
cmyk = "55%,32%,0%,39%"
},
["hero_haze"] = {
hex = "AE6231",
rgb = "174,98,49",
hsl = "25,57%,44%",
cmyk = "0%,44%,72%,32%"
},
["hero_ghost"] = { --lady geist
hex = "088A5C",
rgb = "8,138,92",
hsl = "162,88%,29%",
cmyk = "94%,0%,33%,46%"
},
["hero_mirage"] = {
hex = "87683C",
rgb = "135,104,60",
hsl = "35,38%,38%",
cmyk = "0%,23%,56%,47%"
},
["hero_lash"] = {
hex = "444C57",
rgb = "68,76,87",
hsl = "215,12%,30%",
cmyk = "22%,13%,0%,66%"
},
["hero_gigawatt"] = { --seven
hex = "EC963F",
rgb = "236,150,63",
hsl = "30,83%,59%",
cmyk = "0%,36%,73%,8%"
},
["hero_yamato"] = {
hex = "6F9181",
rgb = "111,145,129",
hsl = "150,13%,50%",
cmyk = "23%,0%,11%,43%"
},
["hero_warden"] = {
hex = "566279",
rgb = "86,98,121",
hsl = "220,17%,41%",
cmyk = "29%,19%,0%,53%"
},
["hero_bebop"] = {
hex = "A04835",
rgb = "160,72,53",
hsl = "11,50%,42%",
cmyk = "0%,55%,67%,37%"
},
["hero_chrono"] = { --paradox
hex = "993A53",
rgb = "153,58,83",
hsl = "341,45%,41%",
cmyk = "0%,62%,46%,40%"
},
["hero_dynamo"] = {
hex = "D0BA46",
rgb = "208,186,70",
hsl = "49,62%,54%",
cmyk = "0%,11%,66%,18%"
},
["hero_shiv"] = {
hex = "A53D88",
rgb = "165,61,136",
hsl = "317,46%,44%",
cmyk = "0%,63%,18%,35%"
}
}
-- Hash for format configuration
local color_formats = {
hex = {
prefix = "#",
postfix = ""
},
rgb = {
prefix = "rgb(",
postfix = ")"
},
hsl = {
prefix = "hsl(",
postfix = ")"
},
cmyk = {
prefix = "cmyk(",
postfix = ")"
}
}
function p.get_color(key, color_format, no_wrap, debug_mode)
if type(key) == 'table' and key.args then
frame = key
key = frame.args[1]
color_format = frame.args[2]
no_wrap = frame.args["no_wrap"]
debug_mode = frame.args["debug_mode"]
end
-- Validate arguments
if key == nil or key == "" then return "'key' parameter must be provided" end
if color_format == nil or color_format == "" then color_format = "hex" end
if no_wrap == nil or no_wrap == 'false' or no_wrap == "" then no_wrap = false else no_wrap = true end
if debug_mode == nil or debug_mode == 'false' or debug_mode == "" then debug_mode = false end
if (key == "Weapon" or
key == "Armor" or
key == "Tech") then
key = "CitadelCategory" .. key
end
local color_data = colors_data[slot]
if color_data == nil then return "slot '" .. key .. "' was not in slots_data map" end
--Retrieve the color
local color = color_data[color_format]
if color == nil then
return "color_format '" .. color_format .. "' is not in slots_data map"
end
-- Add prefix and postfix wrapping
if not no_wrap then
-- Retrieve prefix and postfix
prefix = color_formats[color_format]['prefix']
postfix = color_formats[color_format]['postfix']
-- Add to color
color = prefix .. color .. postfix
end
-- Return result
if debug_mode then
return " " .. color
end
return color
end
function p.list_keys(frame)
local ret = ''
for key, value in pairs(colors_data) do
ret = ret .. key .. ", "
end
return frame:preprocess(ret)
end
function p.write_previews(frame)
local ret = ''
-- Add headers
local headers = {"Key", "Hex Code", "Colored div", "Colored Text", "Colored Underline"}
local header_row = ""
for _, header in ipairs(headers) do
header_row = header_row .. "<th>" .. header .. "</th>"
end
header_row = "<tr>" .. header_row .. "</tr>"
-- Add values
local rows = ""
local row
for key, value in pairs(colors_data) do
local hex = value['hex']
row = ''
row = row .. "<td>" .. key .. "</td>"
row = row .. "<td>" .. "#" .. hex .. "</td>"
row = row .. "<td>" .. "<div style=background-color:#" .. hex .. ";>" .. key .. "</div>" .. "</td>"
row = row .. "<td>" .. "<span style=color:#" .. hex .. ";>" .. key .. "</span>" .. "</td>"
row = row .. "<td>" .. '<span style="text-decoration: underline; text-decoration-color: #'..hex..';">' .. key .. "</span>" .. "</td>"
rows = rows .. "<tr>" .. row .. "</tr>"
end
return "<table>" .. header_row .. rows .. "</table>"
end
return p