<?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%2FMd_gilbert%2FListMaster</id>
	<title>Module:Sandbox/Md gilbert/ListMaster - 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%2FMd_gilbert%2FListMaster"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Md_gilbert/ListMaster&amp;action=history"/>
	<updated>2026-05-25T23:00:14Z</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/Md_gilbert/ListMaster&amp;diff=145821&amp;oldid=prev</id>
		<title>imported&gt;Legoktm: Replace Module:No globals with require( &quot;strict&quot; )</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Md_gilbert/ListMaster&amp;diff=145821&amp;oldid=prev"/>
		<updated>2022-10-23T21:02:57Z</updated>

		<summary type="html">&lt;p&gt;Replace &lt;a href=&quot;/research/Module:No_globals&quot; title=&quot;Module:No globals&quot;&gt;Module:No globals&lt;/a&gt; with require( &amp;quot;strict&amp;quot; )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Will first validate, normalize, and then print tabular data according to the style&lt;br /&gt;
named in the arguments list. Validation will remove any malformed submodule&lt;br /&gt;
transclusions to ensure one bad entry doesn&amp;#039;t break the entire display. Normalization&lt;br /&gt;
ensures that the desired key-value pairs exist (still working through the details on&lt;br /&gt;
how this should be implemented.  Display is self-explanatory.&lt;br /&gt;
&lt;br /&gt;
The goal of this module is to provide a more resilient means of supporting both&lt;br /&gt;
human- and machine-readable and writable data.&lt;br /&gt;
&lt;br /&gt;
Usage to print a members&amp;#039; table, for instance: &lt;br /&gt;
{{#invoke:Sandbox/Md gilbert/ListMaster|printTable|style=[table|section]|display=[...]|&lt;br /&gt;
  {{#name=name1|role=role1|member_since=date1}}&lt;br /&gt;
  {{#name=name2|role=role2|member_since=date2}}&lt;br /&gt;
  {{#name=name3|role=role3|member_since=date3}}&lt;br /&gt;
  {{#name=name4|role=role4|member_since=date4}}&lt;br /&gt;
}}&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.printTable(frame)&lt;br /&gt;
	-- Ensure the style is supported, defaults to table&lt;br /&gt;
	if frame.args.style ~= &amp;quot;table&amp;quot; and frame.args.style ~= &amp;quot;section&amp;quot; then&lt;br /&gt;
		frame.args.style = &amp;quot;table&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- Ensure the display argument exists, return error otherwise&lt;br /&gt;
	if frame.args.display == nil then&lt;br /&gt;
		return &amp;quot;&amp;#039;display&amp;#039; argument is required in ListMaster invocation&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Display either table or section, other styles can be added in the future&lt;br /&gt;
	local res = &amp;quot;&amp;quot;&lt;br /&gt;
	if frame.args.style == &amp;quot;table&amp;quot; then&lt;br /&gt;
		-- Print the table header&lt;br /&gt;
		res = res .. &amp;quot;{| class=&amp;#039;wikitable&amp;#039; style=&amp;#039;border-spacing: 10px; border-collapse: collapse;&amp;#039; \n&amp;quot;&lt;br /&gt;
		res = res .. &amp;quot;|- \n&amp;quot;&lt;br /&gt;
		for col in string.gmatch(frame.args.display, &amp;quot;[^,]+&amp;quot;) do&lt;br /&gt;
			res = res .. &amp;quot;! &amp;quot; .. p.firstToUpper(col) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	elseif frame.args.style == &amp;quot;section&amp;quot; then&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Then iterate over all the submodule items&lt;br /&gt;
	for k,v in ipairs(frame.args) do&lt;br /&gt;
		for mod in string.gmatch(v, &amp;quot;{{[^}}]+}}&amp;quot;) do&lt;br /&gt;
			-- Add in the invocation text&lt;br /&gt;
			mod = &amp;quot;{{#invoke:Sandbox/Md gilbert/ListItem|printItem|&amp;quot; .. string.sub(mod, 4)&lt;br /&gt;
			-- And process the module&lt;br /&gt;
			res = res .. frame:preprocess( mod ) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if frame.args.style == &amp;quot;table&amp;quot; then&lt;br /&gt;
		res = res .. &amp;quot;|}\n&amp;quot;&lt;br /&gt;
	elseif frame.args.style == &amp;quot;section&amp;quot; then&lt;br /&gt;
		&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--return &amp;quot;&amp;lt;nowiki&amp;gt;&amp;quot; .. res .. &amp;quot;&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.firstToUpper(str)&lt;br /&gt;
    return (str:gsub(&amp;quot;^%l&amp;quot;, string.upper))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Legoktm</name></author>
	</entry>
</feed>