<?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%2FLuis150902%2FTest</id>
	<title>Module:Sandbox/Luis150902/Test - 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%2FLuis150902%2FTest"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Luis150902/Test&amp;action=history"/>
	<updated>2026-05-07T09:26:48Z</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/Luis150902/Test&amp;diff=145751&amp;oldid=prev</id>
		<title>imported&gt;Renamed user awfwvowjvwrvnwio: Sandbox edit</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Luis150902/Test&amp;diff=145751&amp;oldid=prev"/>
		<updated>2018-02-15T19:00:45Z</updated>

		<summary type="html">&lt;p&gt;Sandbox edit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This is a metamodule for producing wikitext trees.&lt;br /&gt;
&lt;br /&gt;
local p = {};&lt;br /&gt;
local middleclass = require(&amp;#039;Module:Middleclass&amp;#039;).class;&lt;br /&gt;
&lt;br /&gt;
local TreeNode = middleclass(&amp;#039;TreeNode&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
function TreeNode:initialize(object, options)&lt;br /&gt;
	self.children = {};&lt;br /&gt;
	self.object = object;&lt;br /&gt;
	self.options = options or {};&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TreeNode:addChild(child, level)&lt;br /&gt;
	if type(child) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		error({&lt;br /&gt;
			message = &amp;quot;Value passed to child is not a table (cannot currently check for TreeNodes)&amp;quot;,&lt;br /&gt;
			source = &amp;quot;TreeView&amp;quot;,&lt;br /&gt;
			method = &amp;quot;TreeNode:addChild&amp;quot;,&lt;br /&gt;
			status = -1073741585&lt;br /&gt;
		}, 1);&lt;br /&gt;
	end&lt;br /&gt;
	self.children[child] = child:render(level)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function process(object, pairFunction)&lt;br /&gt;
	-- This function returns the node text to show for object, invoking&lt;br /&gt;
	-- pairFunction for the keys and values of the object.&lt;br /&gt;
	local metatable = getmetatable(object);&lt;br /&gt;
	if type(object) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		return tostring(object);&lt;br /&gt;
	end&lt;br /&gt;
	if metatable and type(metatable.dissector) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		return metatable.dissector:processObject(object, pairFunction);&lt;br /&gt;
	end&lt;br /&gt;
	if metatable.name then&lt;br /&gt;
		return &amp;#039;An instance of&amp;#039; .. metatable.name;&lt;br /&gt;
	end&lt;br /&gt;
	local function counter()&lt;br /&gt;
		local count = 0;&lt;br /&gt;
		for k, v in pairs(object) do&lt;br /&gt;
			pairFunction(k, v);&lt;br /&gt;
			count = count + 1;&lt;br /&gt;
		end&lt;br /&gt;
		return count;&lt;br /&gt;
	end&lt;br /&gt;
	local success, result = pcall(counter);&lt;br /&gt;
	if success then&lt;br /&gt;
		return &amp;#039;A table with &amp;#039; .. tostring(result) .. &amp;#039; pairs&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;A table with an unknown number of pairs&amp;#039;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function TreeNode:render(level)&lt;br /&gt;
	if self.options.noRender then&lt;br /&gt;
		-- Options requested not to render, simply to return self.&lt;br /&gt;
		return self;&lt;br /&gt;
	end&lt;br /&gt;
	local pairFunction = function(k, v)&lt;br /&gt;
		self:addChild(TreeNode:new(v, options), (level or 0) + 1);&lt;br /&gt;
	end;&lt;br /&gt;
	local title = process(self.object, pairFunction);&lt;br /&gt;
	if options.nodeMaker then&lt;br /&gt;
		title = options.nodeMaker(title, level);&lt;br /&gt;
	else&lt;br /&gt;
		if options.indent and type(options.indent) ~= &amp;quot;number&amp;quot; then&lt;br /&gt;
			error({&lt;br /&gt;
				message = &amp;quot;Value passed to options.indent is a not a number and not nil.  Default is 30.&amp;quot;,&lt;br /&gt;
				source = &amp;quot;TreeView&amp;quot;,&lt;br /&gt;
				status = -1073741811&lt;br /&gt;
			}, 1);&lt;br /&gt;
		end&lt;br /&gt;
		local indent = options.indent or 30;&lt;br /&gt;
		title = tostring(mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding-left&amp;#039;, tostring(level * options.indent) .. &amp;#039;px&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;overflow&amp;#039;, &amp;#039;hidden&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;white-space&amp;#039;, &amp;#039;nowrap&amp;#039;));&lt;br /&gt;
	end&lt;br /&gt;
	for child, renderingResult in pairs(self.children) do&lt;br /&gt;
		title = title .. &amp;#039;\n&amp;#039; .. renderingResult&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.treeView(object, options)&lt;br /&gt;
	local metatable = getmetatable(object);&lt;br /&gt;
	if metatable.tree then&lt;br /&gt;
		return style(metatable.tree(object), options);&lt;br /&gt;
	end&lt;br /&gt;
	return TreeNode:new(object, options):render();&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Renamed user awfwvowjvwrvnwio</name></author>
	</entry>
</feed>