<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.zombiepanicsource.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AColor</id>
	<title>Module:Color - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zombiepanicsource.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AColor"/>
	<link rel="alternate" type="text/html" href="https://wiki.zombiepanicsource.com/index.php?title=Module:Color&amp;action=history"/>
	<updated>2026-05-14T14:49:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.zombiepanicsource.com/index.php?title=Module:Color&amp;diff=528&amp;oldid=prev</id>
		<title>Wuffesan: Created page with &quot;-- &lt;pre&gt; local p = {}  local aliases = { 	bz        = &quot;buzz&quot;, 	buzzword  = &quot;buzz&quot;, 	action    = &quot;menu&quot;, 	tutorial  = &quot;help&quot;, 	old       = &quot;red&quot;, 	new       = &quot;green&quot;, 	 	freeze    = &quot;ice&quot;, 	shatter   = &quot;ice&quot;, 	frozen    = &quot;ice&quot;, 	freezing  = &quot;ice&quot;, 	frostbite = &quot;ice&quot;, 	frost     = &quot;ice&quot;, 	frostburn = &quot;ice&quot;, 	 	shock     = &quot;electric&quot;, 	zap       = &quot;electric&quot;, 	 	burn      = &quot;fire&quot;, 	blaze     = &quot;fire&quot;, }  local colors = {     buzz     = &quot;text-buzz&quot;,     menu     = &quot;text-m...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.zombiepanicsource.com/index.php?title=Module:Color&amp;diff=528&amp;oldid=prev"/>
		<updated>2025-06-12T10:41:43Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;pre&amp;gt; local p = {}  local aliases = { 	bz        = &amp;quot;buzz&amp;quot;, 	buzzword  = &amp;quot;buzz&amp;quot;, 	action    = &amp;quot;menu&amp;quot;, 	tutorial  = &amp;quot;help&amp;quot;, 	old       = &amp;quot;red&amp;quot;, 	new       = &amp;quot;green&amp;quot;, 	 	freeze    = &amp;quot;ice&amp;quot;, 	shatter   = &amp;quot;ice&amp;quot;, 	frozen    = &amp;quot;ice&amp;quot;, 	freezing  = &amp;quot;ice&amp;quot;, 	frostbite = &amp;quot;ice&amp;quot;, 	frost     = &amp;quot;ice&amp;quot;, 	frostburn = &amp;quot;ice&amp;quot;, 	 	shock     = &amp;quot;electric&amp;quot;, 	zap       = &amp;quot;electric&amp;quot;, 	 	burn      = &amp;quot;fire&amp;quot;, 	blaze     = &amp;quot;fire&amp;quot;, }  local colors = {     buzz     = &amp;quot;text-buzz&amp;quot;,     menu     = &amp;quot;text-m...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;pre&amp;gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local aliases = {&lt;br /&gt;
	bz        = &amp;quot;buzz&amp;quot;,&lt;br /&gt;
	buzzword  = &amp;quot;buzz&amp;quot;,&lt;br /&gt;
	action    = &amp;quot;menu&amp;quot;,&lt;br /&gt;
	tutorial  = &amp;quot;help&amp;quot;,&lt;br /&gt;
	old       = &amp;quot;red&amp;quot;,&lt;br /&gt;
	new       = &amp;quot;green&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	freeze    = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	shatter   = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	frozen    = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	freezing  = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	frostbite = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	frost     = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	frostburn = &amp;quot;ice&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	shock     = &amp;quot;electric&amp;quot;,&lt;br /&gt;
	zap       = &amp;quot;electric&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
	burn      = &amp;quot;fire&amp;quot;,&lt;br /&gt;
	blaze     = &amp;quot;fire&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local colors = {&lt;br /&gt;
    buzz     = &amp;quot;text-buzz&amp;quot;,&lt;br /&gt;
    menu     = &amp;quot;text-menu&amp;quot;,&lt;br /&gt;
    green    = &amp;quot;text-green&amp;quot;,&lt;br /&gt;
    red      = &amp;quot;text-red&amp;quot;,&lt;br /&gt;
    help     = &amp;quot;text-help&amp;quot;,&lt;br /&gt;
    orange   = &amp;quot;text-orange&amp;quot;,&lt;br /&gt;
    gold     = &amp;quot;text-gold&amp;quot;,&lt;br /&gt;
    yellow   = &amp;quot;text-yellow&amp;quot;,&lt;br /&gt;
    electric = &amp;quot;text-electric&amp;quot;,&lt;br /&gt;
    ice      = &amp;quot;text-ice&amp;quot;,&lt;br /&gt;
    fire     = &amp;quot;text-fire&amp;quot;,&lt;br /&gt;
    wind     = &amp;quot;text-wind&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Main function for wiki usage.&lt;br /&gt;
-- If 2 arguments are present, treats the first one as a keyword.&lt;br /&gt;
-- If only 1 argument is present, searches it for keywords.&lt;br /&gt;
-- Returns the color associated with the keyword, or &amp;quot;inherit&amp;quot; if not found.&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local link = args.link&lt;br /&gt;
	local color = &amp;quot;&amp;quot;&lt;br /&gt;
	local class = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- Determine if the first argument is a hex code or keyword&lt;br /&gt;
	if mw.ustring.match(args[1], &amp;quot;^#%x%x%x%x%x%x$&amp;quot;) then&lt;br /&gt;
		-- If it&amp;#039;s a hex code, use it directly&lt;br /&gt;
		color = args[1]&lt;br /&gt;
		text = args[2] or args[1] -- Use the second argument as text if present, otherwise use the hex code&lt;br /&gt;
	else&lt;br /&gt;
		-- Otherwise, look up the keyword for the color class&lt;br /&gt;
		if args[2] then&lt;br /&gt;
			class = p._getKeywordColor(mw.ustring.lower(args[1]))&lt;br /&gt;
			text = args[2]&lt;br /&gt;
		else&lt;br /&gt;
			class = p._searchTextForKeyword(mw.ustring.lower(args[1]))&lt;br /&gt;
			text = args[1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Handle link creation&lt;br /&gt;
	if link ~= nil then&lt;br /&gt;
		if link == &amp;quot;1&amp;quot; or link == 1 then&lt;br /&gt;
			text = &amp;quot;[[&amp;quot; .. text .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;[[&amp;quot; .. link .. &amp;quot;|&amp;quot; .. text .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Output: either use direct hex color or a CSS class&lt;br /&gt;
	if color ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		-- Apply hex color if present&lt;br /&gt;
		if args.nobold then&lt;br /&gt;
			return &amp;#039;&amp;lt;span style=&amp;quot;color:&amp;#039; .. color .. &amp;#039;;&amp;quot;&amp;gt;&amp;#039; .. text .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;&amp;lt;span style=&amp;quot;color:&amp;#039; .. color .. &amp;#039;;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;#039; .. text .. &amp;#039;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Apply CSS class if using a predefined keyword&lt;br /&gt;
		if args.nobold then&lt;br /&gt;
			return &amp;#039;&amp;lt;span class=&amp;quot;&amp;#039; .. class .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. text .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;&amp;lt;span class=&amp;quot;&amp;#039; .. class .. &amp;#039;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;#039; .. text .. &amp;#039;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Library functions usable in other modules&lt;br /&gt;
&lt;br /&gt;
-- Returns the color associated with given keyword,&lt;br /&gt;
-- or &amp;quot;inherit&amp;quot; if input is not a keyword.&lt;br /&gt;
-- Runs output through nowiki by default,&lt;br /&gt;
-- unless noescape is specified to be true.&lt;br /&gt;
-- (input must be in lower case.)&lt;br /&gt;
function p._getKeywordColor(input, noescape)&lt;br /&gt;
    local element = aliases[input] or input&lt;br /&gt;
    local color = colors[element]&lt;br /&gt;
    if noescape then&lt;br /&gt;
    	return color or &amp;quot;inherit&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
    return color and mw.text.nowiki(color) or &amp;quot;inherit&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Helper method to search given text for the keys of given table t.&lt;br /&gt;
-- If a key is found, returns its value; returns nil otherwise.&lt;br /&gt;
local function searchTextForKeys(text, t)&lt;br /&gt;
	for key, val in pairs(t) do&lt;br /&gt;
		result = mw.ustring.find(text, key, 1, true)&lt;br /&gt;
        if result ~= nil then return val end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Searches given text for keywords and returns the associated color,&lt;br /&gt;
-- or &amp;quot;inherit&amp;quot; if no keyword is found.&lt;br /&gt;
-- (text must be in lower case.)&lt;br /&gt;
function p._searchTextForKeyword(text)&lt;br /&gt;
	-- try elements first&lt;br /&gt;
	local color = searchTextForKeys(text, colors)&lt;br /&gt;
    if color ~= nil then&lt;br /&gt;
        return mw.text.nowiki(color)&lt;br /&gt;
    end&lt;br /&gt;
    -- try aliases afterwards&lt;br /&gt;
    local keyword = searchTextForKeys(text, aliases)&lt;br /&gt;
    if keyword ~= nil then&lt;br /&gt;
    	return mw.text.nowiki(colors[keyword])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;inherit&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
-- &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wuffesan</name></author>
	</entry>
</feed>