<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FSameboat%2Fm2</id>
	<title>Module:Sandbox/Sameboat/m2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FSameboat%2Fm2"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Sameboat/m2&amp;action=history"/>
	<updated>2026-05-27T23:01:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Sameboat/m2&amp;diff=146164&amp;oldid=prev</id>
		<title>imported&gt;Jonesey95: Fix invalid self-closed HTML tag or other HTML tag error</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Sameboat/m2&amp;diff=146164&amp;oldid=prev"/>
		<updated>2017-01-14T23:19:11Z</updated>

		<summary type="html">&lt;p&gt;Fix &lt;a href=&quot;/index.php?title=Category:Pages_using_invalid_self-closed_HTML_tags&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Pages using invalid self-closed HTML tags (page does not exist)&quot;&gt;invalid self-closed HTML tag&lt;/a&gt; or other HTML tag error&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunction(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {parentOnly = true})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.spectrum = makeInvokeFunction(&amp;#039;_spectrum&amp;#039;)&lt;br /&gt;
function p._spectrum(args)&lt;br /&gt;
	local list = mw.text.split(args[1], &amp;#039;\n&amp;#039;)&lt;br /&gt;
	local width = tonumber(args[2]) or tonumber(args.width) or 768&lt;br /&gt;
	local pos,length,rgb,red,green,blue,gray,neargray,title&lt;br /&gt;
	local result = &amp;#039;&amp;lt;div style=&amp;quot;padding:15px 15px 25px 15px;border:1px solid #999;position:relative;line-height:92%;width:&amp;#039; .. width .. &amp;#039;px&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
	for i1, v1 in ipairs(list) do&lt;br /&gt;
		for i2, v2 in ipairs(mw.text.split(v1, &amp;#039;\\&amp;#039;)) do -- i.1:Name; i.2:RGB&lt;br /&gt;
			if (i2 % 2 == 1) then&lt;br /&gt;
				title = v2&lt;br /&gt;
				result = result .. &amp;#039;&amp;lt;div&amp;gt;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
			elseif (i2 % 2 == 0) then&lt;br /&gt;
				if not (string.len(v2) == 6 or string.len(v2) == 3) then&lt;br /&gt;
					result = &amp;#039;&amp;lt;div style=&amp;quot;position:relative;color:red;font-weight:bold&amp;quot;&amp;gt;Invalid RGB value. Please use &amp;quot;RRGGBB&amp;quot; or &amp;quot;RGB&amp;quot; formats and all numbers must be converted to hexadecimal.&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
				else&lt;br /&gt;
					if string.len(v2) == 6 then&lt;br /&gt;
						red, green, blue = v2:match(&amp;quot;(..)(..)(..)&amp;quot;)&lt;br /&gt;
					else&lt;br /&gt;
						red, green, blue = v2:match(&amp;quot;(.)(.)(.)&amp;quot;)&lt;br /&gt;
						red = red .. red&lt;br /&gt;
						green = green .. green&lt;br /&gt;
						blue = blue .. blue&lt;br /&gt;
					end&lt;br /&gt;
					red = tonumber(red, 16)&lt;br /&gt;
					green = tonumber(green, 16)&lt;br /&gt;
					blue = tonumber(blue, 16)&lt;br /&gt;
					rgb = v2&lt;br /&gt;
					if red == green and red == blue then -- grayscale&lt;br /&gt;
						gray = true&lt;br /&gt;
						pos = 0&lt;br /&gt;
						result = result .. &amp;#039;&amp;lt;div style=&amp;quot;position:relative;height:13px&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
					else&lt;br /&gt;
						if red &amp;gt; green and red &amp;gt; blue then -- red&lt;br /&gt;
							if blue &amp;gt; green then pos = width - (width / 6) * (blue - green) / (red - green) -- magenta to red&lt;br /&gt;
							elseif green &amp;gt; blue then pos = (width / 6) * (green - blue) / (red - blue) -- red to yellow&lt;br /&gt;
							else pos = 0&lt;br /&gt;
							end&lt;br /&gt;
						elseif green &amp;gt; red and green &amp;gt; blue then -- green&lt;br /&gt;
							if red &amp;gt; blue then pos = width / 3 - (width / 6) * (red - blue) / (green - blue) -- yellow to green&lt;br /&gt;
							elseif blue &amp;gt; red then pos = width / 3 + (width / 6) * (blue - red) / (green - red) -- green to cyan&lt;br /&gt;
							else pos = width / 3&lt;br /&gt;
							end&lt;br /&gt;
						elseif blue &amp;gt; red and blue &amp;gt; green then -- blue&lt;br /&gt;
							if green &amp;gt; red then pos = width * 2 / 3 - (width / 6) * (green - red) / (blue - red) -- cyan to blue&lt;br /&gt;
							elseif red &amp;gt; green then pos = width * 2 / 3 + (width / 6) * (red - green) / (blue - green) -- blue to magenta&lt;br /&gt;
							else pos = width * 2 / 3&lt;br /&gt;
							end&lt;br /&gt;
						elseif red == green then -- yellow&lt;br /&gt;
							pos = width / 6&lt;br /&gt;
						elseif green == blue then -- cyan&lt;br /&gt;
							pos = width / 2&lt;br /&gt;
						elseif blue == red then -- magenta&lt;br /&gt;
							pos = width * 5 / 6&lt;br /&gt;
						end&lt;br /&gt;
						if (math.abs(red - blue) &amp;lt; 20) and (math.abs(red - green) &amp;lt; 20) and (math.abs(green - blue) &amp;lt; 20) then -- near grayscale&lt;br /&gt;
							neargray = true&lt;br /&gt;
						end&lt;br /&gt;
						pos = math.ceil(pos) - 5&lt;br /&gt;
						if pos &amp;lt;= 0 then&lt;br /&gt;
						else&lt;br /&gt;
							result = result .. &amp;#039;&amp;lt;div style=&amp;quot;position:relative;top:4px;border-bottom:2px solid #&amp;#039; .. rgb .. &amp;#039;;width:&amp;#039; .. pos .. &amp;#039;px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
						end&lt;br /&gt;
						result = result .. &amp;#039;&amp;lt;div style=&amp;quot;position:relative;left:&amp;#039; .. pos .. &amp;#039;px&amp;quot;&amp;gt;[[File:Black Arrow Down.svg|10px|link=|alt=]]&amp;lt;div style=&amp;quot;position:absolute;left:4px;border:1px solid #&amp;#039;&lt;br /&gt;
						if neargray == true then&lt;br /&gt;
							result = result .. &amp;#039;000;opacity:0.05&amp;#039;&lt;br /&gt;
						else&lt;br /&gt;
							result = result .. rgb&lt;br /&gt;
						end&lt;br /&gt;
						result = result .. &amp;#039;;height:&amp;#039; .. (table.maxn(list) - i1) * 32 + 21 .. &amp;#039;px&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
					if pos &amp;lt; 0 then pos = 5 else pos = &amp;#039;-&amp;#039; .. pos end&lt;br /&gt;
					result = result .. &amp;#039;&amp;lt;div style=&amp;quot;position:absolute;top:-12px;left:&amp;#039; .. pos .. &amp;#039;px&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background:#&amp;#039; .. rgb .. &amp;#039;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background:#fff&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;&amp;#039; .. title .. &amp;#039;: &amp;lt;/span&amp;gt;&amp;#039; .. string.upper(rgb) .. &amp;#039;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
					if gray == true then result = result .. &amp;#039;&amp;lt;span style=&amp;quot;font-size:70%&amp;quot;&amp;gt;(grayscale)&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
					elseif neargray == true then result = result .. &amp;#039;&amp;lt;span style=&amp;quot;font-size:70%&amp;quot;&amp;gt;(near grayscale)&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
					gray = false&lt;br /&gt;
					neargray = false&lt;br /&gt;
					result = result .. &amp;#039;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	result = result .. &amp;#039;&amp;lt;div style=&amp;quot;width:&amp;#039; .. width .. &amp;#039;px;height:20px;background:linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;position:relative;left:-5px;top:3px;font-size:11px&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;position:absolute;background:#fff;height:22px;border-bottom:1px solid #aaa;width:&amp;#039; .. width + 10 .. &amp;#039;px&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
	local colori = {&amp;#039;red&amp;#039;, &amp;#039;orange&amp;#039;, &amp;#039;yellow&amp;#039;, &amp;#039;lime&amp;#039;, &amp;#039;green&amp;#039;, &amp;#039;teal&amp;#039;, &amp;#039;cyan&amp;#039;, &amp;#039;azure&amp;#039;, &amp;#039;blue&amp;#039;, &amp;#039;violet&amp;#039;, &amp;#039;magenta&amp;#039;, &amp;#039;purple&amp;#039;}&lt;br /&gt;
	for i, v in ipairs(colori) do&lt;br /&gt;
		local colorin = &amp;#039;&amp;lt;div style=&amp;quot;position:absolute;left:&amp;#039; .. (i - 1) * width / 12 .. &amp;#039;px&amp;quot;&amp;gt;[[File:Black Arrow Up.svg|10px|link=|alt=]] &amp;#039; .. v .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
		if width &amp;lt; 768 then&lt;br /&gt;
			if (i % 2) == 1 then&lt;br /&gt;
				result = result .. colorin&lt;br /&gt;
			else&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			result = result .. colorin&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result .. &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Jonesey95</name></author>
	</entry>
</feed>