<?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%2FJeblad%2FNLG%2Flayout</id>
	<title>Module:Sandbox/Jeblad/NLG/layout - 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%2FJeblad%2FNLG%2Flayout"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Jeblad/NLG/layout&amp;action=history"/>
	<updated>2026-05-25T01:48:46Z</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/Jeblad/NLG/layout&amp;diff=145610&amp;oldid=prev</id>
		<title>imported&gt;Primefac: Primefac moved page Module:NLG/layout to Module:Sandbox/Jeblad/NLG/layout without leaving a redirect: per TFD</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Jeblad/NLG/layout&amp;diff=145610&amp;oldid=prev"/>
		<updated>2019-11-17T04:05:26Z</updated>

		<summary type="html">&lt;p&gt;Primefac moved page &lt;a href=&quot;/index.php?title=Module:NLG/layout&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Module:NLG/layout (page does not exist)&quot;&gt;Module:NLG/layout&lt;/a&gt; to &lt;a href=&quot;/research/Module:Sandbox/Jeblad/NLG/layout&quot; title=&quot;Module:Sandbox/Jeblad/NLG/layout&quot;&gt;Module:Sandbox/Jeblad/NLG/layout&lt;/a&gt; without leaving a redirect: per &lt;a href=&quot;https://en.wikipedia.org/wiki/Templates_for_discussion/Log/2019_November_5&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Templates for discussion/Log/2019 November 5&quot;&gt;TFD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local conf = require &amp;#039;Module:NLG/layout/conf&amp;#039;(&amp;#039;en&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
--- Table acting as a class for Tag&lt;br /&gt;
local Tag = {}&lt;br /&gt;
Tag.__index = Tag&lt;br /&gt;
&lt;br /&gt;
setmetatable(Tag, {&lt;br /&gt;
	__call = function(cls, ...)&lt;br /&gt;
		local self = setmetatable({}, cls)&lt;br /&gt;
		self:_init(...)&lt;br /&gt;
		return self&lt;br /&gt;
	end,&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
--- Initialiser for the Tag class&lt;br /&gt;
-- @param t table holding additional data&lt;br /&gt;
function Tag:_init( t )&lt;br /&gt;
	self._data = t&lt;br /&gt;
	self._position = t and t.position or 50&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Set values in the instance&lt;br /&gt;
-- @return table representing self&lt;br /&gt;
function Tag:set( t )&lt;br /&gt;
	if t then&lt;br /&gt;
		if t.position then&lt;br /&gt;
			self._position = t.position&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return self&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Get the name&lt;br /&gt;
-- @return string representing the name, otherwise nil&lt;br /&gt;
function Tag:name()&lt;br /&gt;
	return self._data.name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Get the after list&lt;br /&gt;
-- @return list of strings representing the tags, otherwise nil&lt;br /&gt;
function Tag:after()&lt;br /&gt;
	return self._data.after or {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Get the before list&lt;br /&gt;
-- @return list of strings representing the tags, otherwise nil&lt;br /&gt;
function Tag:before()&lt;br /&gt;
	return self._data.before or {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Get the position&lt;br /&gt;
-- @return number representing the position, otherwise nil&lt;br /&gt;
function Tag:position()&lt;br /&gt;
	return self._position&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local layout = {}&lt;br /&gt;
&lt;br /&gt;
if 1 or _G[&amp;#039;_BDD&amp;#039;] then&lt;br /&gt;
	layout[&amp;#039;Tag&amp;#039;] = Tag&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
layout.order = function( t )&lt;br /&gt;
	local registry = {}&lt;br /&gt;
	for _,v in ipairs(t) do&lt;br /&gt;
		registry[v.name] = Tag(v):set({[&amp;#039;position&amp;#039;]=initialOrder[v.name]})&lt;br /&gt;
	end&lt;br /&gt;
	for _,v in ipairs(t) do&lt;br /&gt;
		local vTag = registry[v.name]&lt;br /&gt;
		for _,w in ipairs(vTag:after()) do&lt;br /&gt;
			local wTag = registry[w.name]&lt;br /&gt;
			local diff = vTag:position() - wTag:position()&lt;br /&gt;
			if diff &amp;lt; 0 then&lt;br /&gt;
				local position = vTag:position() + 0.4 * diff&lt;br /&gt;
				vTag:set({[&amp;#039;position&amp;#039;]=position})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local max = -100&lt;br /&gt;
	local min = 200&lt;br /&gt;
	for _,v in pairs(registry) do&lt;br /&gt;
		if max &amp;lt; v:position() then&lt;br /&gt;
			max = v:position()&lt;br /&gt;
		end&lt;br /&gt;
		if min &amp;gt; v:position() then&lt;br /&gt;
			min = v:position()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	mw.logObject(min)&lt;br /&gt;
	mw.logObject(max)&lt;br /&gt;
	local scale = 100/(max-min)&lt;br /&gt;
	mw.logObject(scale)&lt;br /&gt;
	for _,v in pairs(registry) do&lt;br /&gt;
		local position = scale*v:position() + min&lt;br /&gt;
		v:set({[&amp;#039;position&amp;#039;]=position})&lt;br /&gt;
	end&lt;br /&gt;
	return order&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return layout&lt;/div&gt;</summary>
		<author><name>imported&gt;Primefac</name></author>
	</entry>
</feed>