Module:Bicolor/data

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules


Supporting module for Module:Bicolor.

Usage[edit]

local c = require('Module:Bicolor/data')


Code

--[[
Bicolor module to contain colors for Module:Bicolor

We can load this efficiently with
local c = mw.loadData("Module:Bicolor/data")
local colors = c.colors
local colorvalues = c.colorvalues
local colortitles = c.colortitles

Creating the definitions like this offers us tables indexed by number or by color name
and combinations as a sequence or an indexed set for efficient testing
--]]

local p = {}

-- color definitions as a sequence of pairs of values
-- will be used as colors[n].name and colors[n].value
-- insert new colors here, preferably in alphabetical order
p.colors = {
	{name = "amber", value = "#FFBF00"},
	{name = "apricot", value = "#FBCEB1"},
	{name = "azure", value = "#007FFF"},
	{name = "beige", value = "#F5F5DC"},
	{name = "black", value = "black"},
	{name = "blond", value = "#FAF0BE"},
	{name = "blue", value = "#2337F7"},
	{name = "blue-gray", value = "#6699CC"},
	{name = "bordeaux", value = "#571C20"},
	{name = "bronze", value = "#CD7F32"},
	{name = "brown", value = "#80583C"},
	{name = "burgundy", value = "#900020"},
	{name = "celadon", value = "#ACE1AF"},
	{name = "chartreuse", value = "#7FFF00"},
	{name = "coral", value = "#F5757F"},
	{name = "cream", value = "#FFFDD0"},
	{name = "crimson", value = "crimson"},
	{name = "cyan", value = "#53F1F1"},
	{name = "ecru", value = "#C2B280"},
	{name = "gold", value = "gold"},
	{name = "golden", value = "gold"},
	{name = "gray", value = "gray"},
	{name = "green", value = "#18A814"},
	{name = "grey", value = "grey"},
	{name = "hazel", value = "#5F6401"},
	{name = "indigo", value = "#2E4085"},
	{name = "ivory", value = "#FFFFF0"},
	{name = "khaki", value = "#C3B091"},
	{name = "lilac", value = "#DBBFF9"},
	{name = "lime green", value = "#BFFF00"},
	{name = "magenta", value = "#E83BE8"},
	{name = "mango", value = "#FFC800"},
	{name = "maroon", value = "maroon"},
	{name = "mauve", value = "#E0B0FF"},
	{name = "navy", value = "#000080"},
	{name = "navy blue", value = "#000080"},
	{name = "olive", value = "olive"},
	{name = "orange", value = "orange"},
	{name = "pink", value = "pink"},
	{name = "purple", value = "#8A1799"},
	{name = "red", value = "red"},
	{name = "rose", value = "#FF007F"},
	{name = "salmon", value = "salmon"},
	{name = "sepia", value = "#704214"},
	{name = "silver", value = "silver"},
	{name = "tan", value = "tan"},
	{name = "teal", value = "teal"},
	{name = "turquoise", value = "#28C6B5"},
	{name = "vermilion", value = "#E34234"},
	{name = "violet", value = "#6422D3"},
	{name = "white", value = "white"},
	{name = "yellow", value = "#F1F14B"}
}

-- sort p.colors by name
table.sort(p.colors, function(a, b) return a.name < b.name end)

-- add titles
for k, color in ipairs(p.colors) do
	if color.name ~= color.value then
		color.title = color.name .. ' (' .. color.value .. ')'
	else
		color.title = color.name
	end
end

-- make length of p.colors accessible from calling module
p.colorcount = #(p.colors)

-- derive the values from the color names
-- so that colorvalues["name-of-color"] will have the corresponding color value
p.colorvalues = {}
for i, v in ipairs(p.colors) do
	p.colorvalues[v.name] = v.value
end

-- derive the titles from the color names
-- so that colortitles["name-of-color"] will have the corresponding color title
p.colortitles = {}
for i, v in ipairs(p.colors) do
	p.colortitles[v.name] = v.title
end

return p