<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://hna.wiki/Module:Table_Wrapper?action=history&amp;feed=atom</id>
	<title>Module:Table Wrapper - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://hna.wiki/Module:Table_Wrapper?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://hna.wiki/Module:Table_Wrapper?action=history"/>
	<updated>2026-07-17T10:10:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://hna.wiki/Module:Table_Wrapper?diff=6546&amp;oldid=prev</id>
		<title>Shirra: from hsr wiki</title>
		<link rel="alternate" type="text/html" href="https://hna.wiki/Module:Table_Wrapper?diff=6546&amp;oldid=prev"/>
		<updated>2025-11-10T08:59:30Z</updated>

		<summary type="html">&lt;p&gt;from hsr wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local lib = require(&amp;#039;Module:Feature&amp;#039;)&lt;br /&gt;
local ne = lib.isNotEmpty&lt;br /&gt;
local ie = lib.isEmpty&lt;br /&gt;
&lt;br /&gt;
function attrTable(attrString)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for val in string.gmatch(attrString, &amp;#039;([^;]+)&amp;#039;) do&lt;br /&gt;
		local attr, tag = string.match(val, &amp;#039;(.+):(.+)&amp;#039;)&lt;br /&gt;
		attr = lib.trim(attr)&lt;br /&gt;
		tag = lib.trim(tag)&lt;br /&gt;
		if ne(attr) and ne(tag) then out[attr] = tag end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		parentFirst = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		wrapper = { &amp;#039;Template:Table Wrapper&amp;#039; }&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(frame, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(frame, args)&lt;br /&gt;
	local class = args[&amp;#039;class&amp;#039;] or &amp;#039;article-table&amp;#039;&lt;br /&gt;
	local tableCss = args[&amp;#039;style&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local size = args[&amp;#039;size&amp;#039;]&lt;br /&gt;
	&lt;br /&gt;
	if ie(size) then&lt;br /&gt;
		return mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;error&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Table size is invalid. Please enter a valid size in the form r;c.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local row, col = string.match(size, &amp;#039;(%d+);(%d+)&amp;#039;)&lt;br /&gt;
	if row == nil or col == nil then&lt;br /&gt;
		return mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;error&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Table size is invalid: &amp;#039;, size, &amp;#039;. Please enter a valid size in the form r;c.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	row = tonumber(row)&lt;br /&gt;
	col = tonumber(col)&lt;br /&gt;
	-- Check if table has any zero size rows or columns&lt;br /&gt;
	-- or if it is extremely large rows or columns&lt;br /&gt;
	-- (don&amp;#039;t want to eat up all the lua time on &lt;br /&gt;
	-- massive tables that should be split or restructured)&lt;br /&gt;
	if row &amp;lt;= 0 or col &amp;lt;= 0 or row &amp;gt; 99 or col &amp;gt; 99 then&lt;br /&gt;
		return mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;error&amp;#039;)&lt;br /&gt;
			:wikitext(&amp;#039;Table size is invalid: &amp;#039;, size, &amp;#039;. Minimum size is 1 row/column, maximum size is 99 rows/columns.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local out = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(class)&lt;br /&gt;
		:css(attrTable(tableCss))&lt;br /&gt;
		&lt;br /&gt;
	local tableID = args[&amp;#039;tableID&amp;#039;] or nil&lt;br /&gt;
	if ne(tableID) then&lt;br /&gt;
		out:attr(&amp;#039;id&amp;#039;, tableID)&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	local caption = args[&amp;#039;caption&amp;#039;] or nil&lt;br /&gt;
	if ne(caption) then &lt;br /&gt;
		out:tag(&amp;#039;caption&amp;#039;)&lt;br /&gt;
			:wikitext(caption)&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	--mw.log(out) -- debug&lt;br /&gt;
	for i = 1, row do&lt;br /&gt;
		local tr = out:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		&lt;br /&gt;
		local rowID = args[&amp;#039;id-&amp;#039; .. i] or nil&lt;br /&gt;
		if ne(rowID) then tr:attr(&amp;#039;id&amp;#039;, rowID) end&lt;br /&gt;
		&lt;br /&gt;
		for j = 1, col do&lt;br /&gt;
			local header = args[&amp;#039;header-&amp;#039; .. i .. &amp;#039;-&amp;#039; .. j]&lt;br /&gt;
			local cell = args[&amp;#039;cell-&amp;#039; .. i .. &amp;#039;-&amp;#039; .. j]&lt;br /&gt;
			local css = args[&amp;#039;style-&amp;#039; .. i .. &amp;#039;-&amp;#039; .. j]&lt;br /&gt;
			local attr = args[&amp;#039;attr-&amp;#039; .. i .. &amp;#039;-&amp;#039; .. j]&lt;br /&gt;
			&lt;br /&gt;
			local cellOrHeader = nil&lt;br /&gt;
			if header ~= nil then&lt;br /&gt;
				cellOrHeader = tr:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
					:wikitext(header)&lt;br /&gt;
			elseif cell ~= nil then&lt;br /&gt;
				cellOrHeader = tr:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					:wikitext(cell)&lt;br /&gt;
			end&lt;br /&gt;
			-- add any css attributes&lt;br /&gt;
			if ne(css) and cellOrHeader ~= nil then&lt;br /&gt;
				cellOrHeader:css(attrTable(css))&lt;br /&gt;
			end&lt;br /&gt;
			-- add any html attributes&lt;br /&gt;
			if ne(attr) and cellOrHeader ~= nil then&lt;br /&gt;
				cellOrHeader:attr(attrTable(attr))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--mw.log(out) --debug&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Shirra</name></author>
	</entry>
</feed>