<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://ss14-wiki.rp-s.tech/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AChemistry_Lookup</id>
	<title>Модуль:Chemistry Lookup - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://ss14-wiki.rp-s.tech/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AChemistry_Lookup"/>
	<link rel="alternate" type="text/html" href="https://ss14-wiki.rp-s.tech/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Chemistry_Lookup&amp;action=history"/>
	<updated>2026-04-28T04:49:07Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0-rc.0</generator>
	<entry>
		<id>https://ss14-wiki.rp-s.tech/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Chemistry_Lookup&amp;diff=844&amp;oldid=prev</id>
		<title>Wooby: Новая страница: «local prototypes = mw.loadData(&quot;Module:Chemistry Lookup/data&quot;)  local p = {} p.chem = prototypes.chem p.react = prototypes.react p.groupDirection = prototypes.groupDirection  function p.readscalar(frame) 	return mw.text.nowiki(p.chem[frame.args[1]][frame.args[2]]) end  function p.readscalarreact(frame) 	if p.react[frame.args[1]][frame.args[2]] ~= nil then 		return mw.text.nowiki(p.react[frame.args[1]][frame.args[2]]) 	else 		return &quot;&quot; 	end end  function p.ge...»</title>
		<link rel="alternate" type="text/html" href="https://ss14-wiki.rp-s.tech/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Chemistry_Lookup&amp;diff=844&amp;oldid=prev"/>
		<updated>2024-03-11T15:17:08Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «local prototypes = mw.loadData(&amp;quot;Module:Chemistry Lookup/data&amp;quot;)  local p = {} p.chem = prototypes.chem p.react = prototypes.react p.groupDirection = prototypes.groupDirection  function p.readscalar(frame) 	return mw.text.nowiki(p.chem[frame.args[1]][frame.args[2]]) end  function p.readscalarreact(frame) 	if p.react[frame.args[1]][frame.args[2]] ~= nil then 		return mw.text.nowiki(p.react[frame.args[1]][frame.args[2]]) 	else 		return &amp;quot;&amp;quot; 	end end  function p.ge...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local prototypes = mw.loadData(&amp;quot;Module:Chemistry Lookup/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
p.chem = prototypes.chem&lt;br /&gt;
p.react = prototypes.react&lt;br /&gt;
p.groupDirection = prototypes.groupDirection&lt;br /&gt;
&lt;br /&gt;
function p.readscalar(frame)&lt;br /&gt;
	return mw.text.nowiki(p.chem[frame.args[1]][frame.args[2]])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.readscalarreact(frame)&lt;br /&gt;
	if p.react[frame.args[1]][frame.args[2]] ~= nil then&lt;br /&gt;
		return mw.text.nowiki(p.react[frame.args[1]][frame.args[2]])&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getcolor(frame)&lt;br /&gt;
	return mw.text.nowiki(p.chem[frame.args[1]].color:sub(1, 7))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gettextcolor(frame)&lt;br /&gt;
	local basecol = p.chem[frame.args[1]].color&lt;br /&gt;
	local red = tonumber(basecol:sub(2, 3), 16)&lt;br /&gt;
	local grn = tonumber(basecol:sub(4, 5), 16)&lt;br /&gt;
	local blu = tonumber(basecol:sub(6, 7), 16)&lt;br /&gt;
	local luminance = math.sqrt(0.241*red*red + 0.691*grn*grn + 0.068*blu*blu)&lt;br /&gt;
	if luminance &amp;gt; 100 then&lt;br /&gt;
		return mw.text.nowiki(&amp;quot;#000&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.text.nowiki(&amp;quot;#FFF&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.hasrecipe(frame)&lt;br /&gt;
	return p.chem[frame.args[1]][&amp;quot;recipes&amp;quot;][1] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildboxes(frame)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	local group = frame.args[1]&lt;br /&gt;
	for k in pairs(p.chem) do&lt;br /&gt;
		if p.chem[k].group == group then&lt;br /&gt;
			out = out .. frame:expandTemplate{ title = &amp;quot;Chembox&amp;quot;, args = { prototype = k }}&lt;br /&gt;
		elseif group == nil then&lt;br /&gt;
			out = out .. frame:expandTemplate{ title = &amp;quot;Chembox&amp;quot;, args = { prototype = k }}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildreactboxes(frame)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for k in pairs(p.react) do&lt;br /&gt;
		if tablelength(p.react[k].effects) ~= 0 then&lt;br /&gt;
			out = out .. frame:expandTemplate{ title = &amp;quot;Reactionbox&amp;quot;, args = { reaction = k }}	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildrecipes(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for id, recipe in pairs(p.chem[chem].recipes) do&lt;br /&gt;
		out = out .. p.buildreaction(frame, recipe)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildreactionext(frame)&lt;br /&gt;
	local react = frame.args[1]&lt;br /&gt;
	return p.buildreaction(frame, react)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildreaction(frame, react)&lt;br /&gt;
	local data = p.react[react]&lt;br /&gt;
	local dest = &amp;quot;Chemistry&amp;quot;&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k,v in pairs(data.reactants) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local dest = &amp;quot;Chemistry&amp;quot;&lt;br /&gt;
		if (p.groupDirection[p.chem[k].group] ~= nil) then&lt;br /&gt;
			dest = p.groupDirection[p.chem[k].group]&lt;br /&gt;
		end&lt;br /&gt;
		args[&amp;quot;component-&amp;quot; .. i] = frame:expandTemplate{ title = &amp;quot;Chem Recipe Component&amp;quot;, args = { reagent = k, amount = v.amount, dest = dest }}&lt;br /&gt;
	end&lt;br /&gt;
	i = 0&lt;br /&gt;
	for k,v in pairs(data.products) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local dest = &amp;quot;Chemistry&amp;quot;&lt;br /&gt;
		if (p.groupDirection[p.chem[k].group] ~= nil) then&lt;br /&gt;
			dest = p.groupDirection[p.chem[k].group]&lt;br /&gt;
		end&lt;br /&gt;
		args[&amp;quot;result-&amp;quot; .. i] = frame:expandTemplate{ title = &amp;quot;Chem Recipe Component&amp;quot;, args = { reagent = k, amount = v, dest = dest }}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if data.effects ~= nil then&lt;br /&gt;
		args.effects = p.geneffectlist(data.effects, frame, 1)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;Chem Box Recipe&amp;quot;, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checksatiatesthirst(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		for l, w in pairs(v.effects) do&lt;br /&gt;
			if w.id == &amp;quot;SatiateThirst&amp;quot; then&lt;br /&gt;
				return &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.checksatiateshunger(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		for l, w in pairs(v.effects) do&lt;br /&gt;
			if w.id == &amp;quot;SatiateHunger&amp;quot; then&lt;br /&gt;
				return &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.haseffects(frame)&lt;br /&gt;
	local chem = frame.args[1]&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		for l, w in pairs(v.effects) do&lt;br /&gt;
			if w.id ~= &amp;quot;SatiateHunger&amp;quot; and w.id ~= &amp;quot;SatiateThirst&amp;quot; then&lt;br /&gt;
				return &amp;quot;1&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.geneffects(frame, chem)&lt;br /&gt;
	if chem == nil then&lt;br /&gt;
		chem = frame.args[1]&lt;br /&gt;
	end&lt;br /&gt;
	local met = p.chem[chem].metabolisms&lt;br /&gt;
	if met == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for k, v in pairs(met) do&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;b&amp;gt;&amp;quot; .. k .. &amp;quot;&amp;lt;/b&amp;gt; (&amp;quot; .. v.rate .. &amp;quot; единиц в секунду)\n&amp;quot; .. p.geneffectlist(v.effects, frame, v.rate)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.geneffectlist(effects, frame, rate)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for l, w in pairs(effects) do&lt;br /&gt;
		-- Popup Message is ignored on purpose&lt;br /&gt;
		if w.id == &amp;quot;HealthChange&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genhealthchange(w, rate, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;AdjustReagent&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genadjustreagent(w, rate, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;FlammableReaction&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genflammablereaction(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;AdjustTemperature&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genadjusttemperature(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;GenericStatusEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.gengenericstatuseffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ExplosionReactionEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genexplosionreactioneffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;FoamAreaReactionEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genfoamareareactioneffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;SmokeAreaReactionEffect&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.gensmokeareareactioneffect(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		elseif w.id == &amp;quot;ModifyBleedAmount&amp;quot; then&lt;br /&gt;
			out = out .. &amp;quot;:&amp;quot; .. p.genmodifybleedamount(w, frame) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gensmokeareareactioneffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;SmokeAreaReactionEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genfoamareareactioneffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;FoamAreaReactionEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genexplosionreactioneffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;ExplosionReactionEffect&amp;quot;, args = { when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gengenericstatuseffect(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;GenericStatusEffect&amp;quot;, args = { key = r.Key, type = r.Type, time = r.Time, refresh = r.Refresh, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genadjusttemperature(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;AdjustTemperature&amp;quot;, args = { amount = r.Amount, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genflammablereaction(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;FlammableReaction&amp;quot;, args = { multiplier = r.Multiplier, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genflammablereaction(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;FlammableReaction&amp;quot;, args = { multiplier = r.Multiplier, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genadjustreagent(r, rate, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;AdjustReagent&amp;quot;, args = { amount = r.Amount, reagent = r.Reagent, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genmodifybleedamount(r, frame)&lt;br /&gt;
	if r.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(r.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;ModifyBleedAmount&amp;quot;, args = { amount = r.Amount, when = conds, prob = r.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genhealthchange(h, rate, frame)&lt;br /&gt;
	local healst = {}&lt;br /&gt;
	local dealst = {}&lt;br /&gt;
	local r = 1.0 / rate&lt;br /&gt;
	if h.damage.types ~= nil then&lt;br /&gt;
	for k, v in pairs(h.damage.types) do&lt;br /&gt;
		if v &amp;lt; 0 then&lt;br /&gt;
			healst[k] = v * r&lt;br /&gt;
		else&lt;br /&gt;
			dealst[k] = v * r&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if h.damage.groups ~= nil then&lt;br /&gt;
	for k, v in pairs(h.damage.groups) do&lt;br /&gt;
		if v &amp;lt; 0 then&lt;br /&gt;
			healst[k] = v * r&lt;br /&gt;
		else&lt;br /&gt;
			dealst[k] = v * r&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local heals = hchangelist(healst, frame)&lt;br /&gt;
	local deals = hchangelist(dealst, frame)&lt;br /&gt;
	local conds = nil&lt;br /&gt;
	if h.conditions ~= nil then &lt;br /&gt;
		conds = p.genconds(h.conditions, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;HealthChange&amp;quot;, args = { heals = heals, deals = deals, when = conds, prob = h.probability }}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function hchangelist(l, frame)&lt;br /&gt;
	out = &amp;quot;&amp;quot;&lt;br /&gt;
	local len = tablelength(l)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(l) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if len == i and i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, and &amp;quot;&lt;br /&gt;
		elseif i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. hchange(k, v, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- So we can make it fancy later&lt;br /&gt;
function hchange(ty, amnt, frame)&lt;br /&gt;
	return frame:expandTemplate{ title = &amp;quot;HealthModifier&amp;quot;, args = { adj = amnt, kind = ty } }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genconds(conds, frame)&lt;br /&gt;
	out = &amp;quot;&amp;quot;&lt;br /&gt;
	local len = tablelength(conds)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(conds) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if len == i and i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, and &amp;quot;&lt;br /&gt;
		elseif i ~= 1 then&lt;br /&gt;
			out = out .. &amp;quot;, &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. p.gencond(v, frame)&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gencond(c, frame)&lt;br /&gt;
	if c.id == &amp;quot;TotalDamage&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;TotalDamage&amp;quot;, args = { min = c.Min, max = c.Max } }&lt;br /&gt;
	elseif c.id == &amp;quot;ReagentThreshold&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;ReagentThreshold&amp;quot;, args = { min = c.Min, max = c.Max, reagent = c.Reagent } }&lt;br /&gt;
	elseif c.id == &amp;quot;OrganType&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;OrganType&amp;quot;, args = { shouldhave = c.ShouldHave, type = c.Type } }&lt;br /&gt;
	elseif c.id == &amp;quot;Temperature&amp;quot; then&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;quot;Temperature&amp;quot;, args = {  min = c.Min, max = c.Max } }&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function tablelength(T)&lt;br /&gt;
  local count = 0&lt;br /&gt;
  for _ in pairs(T) do count = count + 1 end&lt;br /&gt;
  return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function has_value(tab, val)&lt;br /&gt;
    for index, value in ipairs(tab) do&lt;br /&gt;
        if value[1] == val then&lt;br /&gt;
            return true&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function strsplit(inputstr, seperator)&lt;br /&gt;
        if seperator == nil then&lt;br /&gt;
                seperator = &amp;quot;,&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        local t={}&lt;br /&gt;
        for str in string.gmatch(inputstr, &amp;quot;([^&amp;quot;..seperator..&amp;quot;]+)&amp;quot;) do&lt;br /&gt;
                table.insert(t, str)&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wooby</name></author>
	</entry>
</feed>