<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://moasspedia.org/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ADump%2Fdoc</id>
	<title>Module:Dump/doc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://moasspedia.org/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ADump%2Fdoc"/>
	<link rel="alternate" type="text/html" href="https://moasspedia.org/w/index.php?title=Module:Dump/doc&amp;action=history"/>
	<updated>2026-04-12T19:49:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://moasspedia.org/w/index.php?title=Module:Dump/doc&amp;diff=1097&amp;oldid=prev</id>
		<title>Wikipedia&gt;Johnuniq: args function</title>
		<link rel="alternate" type="text/html" href="https://moasspedia.org/w/index.php?title=Module:Dump/doc&amp;diff=1097&amp;oldid=prev"/>
		<updated>2021-06-10T07:55:48Z</updated>

		<summary type="html">&lt;p&gt;args function&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This module can dump a table by displaying its contents as text. It can also display formatted html text. That may help develop other modules.&lt;br /&gt;
&lt;br /&gt;
An alternative is to use &amp;lt;code&amp;gt;mw.dumpObject()&amp;lt;/code&amp;gt; but the result from this module is clearer and is close to valid Lua source.&lt;br /&gt;
&lt;br /&gt;
== Dump of a Wikidata entity ==&lt;br /&gt;
&lt;br /&gt;
When working with Wikidata, it can be useful to examine a table representing an entity.&lt;br /&gt;
&lt;br /&gt;
For example, [[Southern African Large Telescope]] is [[d:Q833639]]. That entity can be viewed as a Lua table by previewing:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|wikidata|Q833639}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
To do that, edit [[Special:MyPage/sandbox|your sandbox]] and replace its contents with the above line, then click Show preview. [[Module talk:Dump]] shows this example.&lt;br /&gt;
&lt;br /&gt;
If wanted, the width of each indented column can be set, for example to two spaces or to use tab characters:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|wikidata|Q833639|indent=2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|wikidata|Q833639|indent=tab}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A property such as {{Q|P2386}} can also be displayed:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|wikidata|P2386}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dump of a table for another module ==&lt;br /&gt;
&lt;br /&gt;
If there is a problem debugging a module, it can be helpful to use a sandbox copy of the module to display the contents of a table to confirm that it contains expected data. The following shows how a module can dump a table.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local example = {&lt;br /&gt;
		link = true,&lt;br /&gt;
		fruit = { yellow = &amp;#039;bannana&amp;#039;, red = &amp;#039;cherry&amp;#039; },&lt;br /&gt;
		11, 22, 33,&lt;br /&gt;
	}&lt;br /&gt;
	local dump = require(&amp;#039;Module:Dump&amp;#039;)._dump&lt;br /&gt;
	return dump(example, &amp;#039;example&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
return p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above code in Module:Example, the result could be displayed by previewing:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:example|main}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The module contains a complex table for testing. The table can be displayed by previewing:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|testcase}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dump of a formatted html string ==&lt;br /&gt;
&lt;br /&gt;
A module can use [[:mw:Extension:Scribunto/Lua reference manual#HTML library|mw.html]] to generate html. For testing, it may be useful to display the formatted result. The following shows how a module can create and dump html text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
local function main()&lt;br /&gt;
	local tbl = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	tbl&lt;br /&gt;
		:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;caption&amp;#039;):wikitext(&amp;#039;Table demonstration&amp;#039;):done()&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Month&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Amount&amp;#039;):done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;January&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;$100&amp;lt;br&amp;gt;loss&amp;#039;):done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;February&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;$200&amp;#039;)&lt;br /&gt;
	local html = tostring(tbl)&lt;br /&gt;
	local dumphtml = require(&amp;#039;Module:Dump&amp;#039;)._dumphtml&lt;br /&gt;
	return dumphtml(html)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return { main = main }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above code in Module:Example, the result could be displayed by previewing:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:example|main}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;caption&amp;gt;Table demonstration&amp;lt;/caption&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Month&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Amount&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;January&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;$100&amp;lt;br&amp;gt;loss&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;February&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;$200&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; function in the code above could be modified to return the html table by replacing the last two lines with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
	return html&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In that case, the result could be displayed by previewing the following (the &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt; is needed if the text contains &amp;quot;&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&amp;quot;):&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|dumphtml|1={{#invoke:example|main}}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dumping a navbox ===&lt;br /&gt;
&lt;br /&gt;
Previewing the following examples in a sandbox may be useful to examine the results of a template, such as {{tl|navbox}}, that generates html.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{#invoke:dump|dumphtml|1=&lt;br /&gt;
  {{navbox/sandbox&lt;br /&gt;
  |group1 = Group1&lt;br /&gt;
  |list1 = List1&lt;br /&gt;
  |group2 = Group2&lt;br /&gt;
  |list2 = List2&lt;br /&gt;
  |group3 = Group3&lt;br /&gt;
  |list3 = List3&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dumphtml procedure only works reliably with valid html. In the following example, extra text (&amp;lt;code&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt;) is inserted at the start because the output from a subgroup (child) navbox starts with &amp;lt;code&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{#invoke:dump|dumphtml|1=&amp;lt;div&amp;gt;&lt;br /&gt;
  {{navbox/sandbox|subgroup&lt;br /&gt;
  |group1 = Group1&lt;br /&gt;
  |list1 = List1&lt;br /&gt;
  |group2 = Group2&lt;br /&gt;
  |list2 = List2&lt;br /&gt;
  |group3 = Group3&lt;br /&gt;
  |list3 = List3&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dump of arguments ==&lt;br /&gt;
&lt;br /&gt;
[[Special:ExpandTemplates]] is useful if there is a need to view the wikitext returned by a template or module. However, ExpandTemplates does not always show exactly what a module would receive. For example, the following template gives the output shown in ExpandTemplates, but the wikitext passed to a module would actually contains [[WP:UNIQ|strip markers]].&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{convert|1+2/3&amp;lt;ref&amp;gt;Example&amp;lt;/ref&amp;gt;|ft|in}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:ExpandTemplates output, rearranged on multiple lines for clarity:&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;templatestyles src=&amp;quot;Fraction/styles.css&amp;quot;&amp;gt;&amp;lt;/templatestyles&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;frac&amp;quot; role=&amp;quot;math&amp;quot;&amp;gt;1&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;+&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&amp;amp;frasl;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;ref&amp;gt;Example&amp;lt;/ref&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; feet (20&amp;amp;nbsp;in)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;args&amp;lt;/code&amp;gt; function shows what a module receives in its arguments.&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|args|1={{convert|1+2/3&amp;lt;ref&amp;gt;Example&amp;lt;/ref&amp;gt;|ft|in}}}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
The output follows. For clarity, it has been rearranged on multiple lines and each [[delete character]] has been replaced with &amp;lt;code&amp;gt;♢&amp;lt;/code&amp;gt;.&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;♢&amp;#039;&amp;quot;`UNIQ--templatestyles-00000002-QINU`&amp;quot;&amp;#039;♢&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;frac&amp;quot; role=&amp;quot;math&amp;quot;&amp;gt;1&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;+&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;&amp;amp;frasl;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;♢&amp;#039;&amp;quot;`UNIQ--ref-00000001-QINU`&amp;quot;&amp;#039;♢&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt; feet (20&amp;amp;nbsp;in)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dump of parameters ==&lt;br /&gt;
&lt;br /&gt;
A template might invoke the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; function in the example [[#Dump of a table for another module|above]]. Any parameters passed to the template or the module can be displayed for debugging. That would be to investigate an unexpected result in a page, for example, [[Albedo]]. To see what parameters are received by a module used in that article, edit the module and insert the following line at the start of the main function:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
	if true then return require(&amp;#039;Module:Dump&amp;#039;).parameters(frame) end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Do not save the changes. Instead, enter the name of the article (for example, Albedo) in the box under &amp;quot;Preview page with this module&amp;quot;, then click Show preview. Any parameters passed to the module in its frame and parent frame are displayed where the result from the module would normally appear.&lt;br /&gt;
&lt;br /&gt;
== Dump of structured data ==&lt;br /&gt;
&lt;br /&gt;
A Lua program could execute&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
	local data = mw.ext.data.get(&amp;#039;Wikipedia statistics/data.tab&amp;#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
to read a table of data from [[c:Data:Wikipedia statistics/data.tab]].&lt;br /&gt;
&lt;br /&gt;
An edit in a sandbox can be previewed to see what data the program would receive. To do that, preview the following wikitext:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|Wikipedia statistics/data.tab}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The dump module accepts any text as the parameter and will apply special processing if the text is recognized. Structured data is identified as text ending with &amp;lt;code&amp;gt;.tab&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Global table _G ==&lt;br /&gt;
&lt;br /&gt;
In Lua, &amp;lt;code&amp;gt;_G&amp;lt;/code&amp;gt; is a global variable which is a table holding information about all global variables. The &amp;lt;code&amp;gt;_G&amp;lt;/code&amp;gt; table can be displayed by previewing (both &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;_G&amp;lt;/code&amp;gt; work):&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|testcase|G}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If wanted, the width of each indented column can be set, for example to 2 spaces:&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:dump|testcase|G|indent=2}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikipedia&gt;Johnuniq</name></author>
	</entry>
</feed>