https://lingualibre.org/index.php?title=Module:TNT&feed=atom&action=history
Module:TNT - Revision history
2024-03-29T13:34:51Z
Revision history for this page on the wiki
MediaWiki 1.35.2
https://lingualibre.org/index.php?title=Module:TNT&diff=913764&oldid=prev
WikiLucas00: 1 revision imported
2023-05-13T15:33:02Z
<p>1 revision imported</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:33, 13 May 2023</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
WikiLucas00
https://lingualibre.org/index.php?title=Module:TNT&diff=913763&oldid=prev
mw>ExE Boss: Only use the `zzz123` workaround for integer‑only parameter names
2023-02-02T01:14:59Z
<p>Only use the `zzz123` workaround for integer‑only parameter names</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 01:14, 2 February 2023</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l100" >Line 100:</td>
<td colspan="2" class="diff-lineno">Line 100:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> local numOnly = true</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local params = {}</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local params = {}</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local paramOrder = {}</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local paramOrder = {}</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l113" >Line 113:</td>
<td colspan="2" class="diff-lineno">Line 114:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> if name then</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> if name then</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> if (</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> (type(name) ~= "number")</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> and (</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> (type(name) ~= "string")</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> or not string.match(name, "^%d+$")</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> )</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> ) then</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> numOnly = false</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> end</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> params[name] = newVal</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> params[name] = newVal</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> table.insert(paramOrder, name)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> table.insert(paramOrder, name)</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l119" >Line 119:</td>
<td colspan="2" class="diff-lineno">Line 129:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Work around json encoding treating {"1":{...}} as an [{...}]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Work around json encoding treating {"1":{...}} as an [{...}]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> params['zzz123']=''</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins class="diffchange diffchange-inline">if numOnly then</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>params['zzz123']=''</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> end</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local json = mw.text.jsonEncode({</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local json = mw.text.jsonEncode({</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> params=params,</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> params=params,</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> paramOrder=paramOrder,</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> paramOrder=paramOrder,</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> description=data.description</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> description=data.description<ins class="diffchange diffchange-inline">,</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> })</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> })</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> json = string.gsub(json,'"zzz123":"",?', "")</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins class="diffchange diffchange-inline">if numOnly then</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>json = string.gsub(json,'"zzz123":"",?', "")</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> end</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> return json</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> return json</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l156" >Line 156:</td>
<td colspan="2" class="diff-lineno">Line 170:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Give helpful error to thirdparties who try and copy this module.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Give helpful error to thirdparties who try and copy this module.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> if not mw.ext or not mw.ext.data or not mw.ext.data.get then</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> if not mw.ext or not mw.ext.data or not mw.ext.data.get then</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:<del class="diffchange diffchange-inline">' </del>.. dataset)</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> error(<ins class="diffchange diffchange-inline">string.format([[''</ins>'Missing JsonConfig extension<ins class="diffchange diffchange-inline">, or not properly configured</ins>;</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Cannot load https://commons.wikimedia.org/wiki/Data:<ins class="diffchange diffchange-inline">%s.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">See https://www</ins>.<ins class="diffchange diffchange-inline">mediawiki</ins>.<ins class="diffchange diffchange-inline">org/wiki/Extension:JsonConfig#Supporting_Wikimedia_templates''']], </ins>dataset<ins class="diffchange diffchange-inline">)</ins>)</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
mw>ExE Boss
https://lingualibre.org/index.php?title=Module:TNT&diff=570217&oldid=prev
WikiLucas00: 1 revision imported: Module TNT
2021-07-21T13:41:04Z
<p>1 revision imported: Module TNT</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:41, 21 July 2021</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
WikiLucas00
https://lingualibre.org/index.php?title=Module:TNT&diff=570216&oldid=prev
meta>ExE Boss: 3 revisions imported from mw:Module:TNT
2021-07-06T16:57:42Z
<p><a href="https://www.mediawiki.org/wiki/Special:Diff/3522878/4692818" class="extiw" title="mw:Special:Diff/3522878/4692818">3 revisions</a> imported from <a href="https://www.mediawiki.org/wiki/Module:TNT" class="extiw" title="mw:Module:TNT">mw:Module:TNT</a></p>
<p><b>New page</b></p><div>--<br />
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)<br />
-- This module allows any template or module to be copy/pasted between<br />
-- wikis without any translation changes. All translation text is stored<br />
-- in the global Data:*.tab pages on Commons, and used everywhere.<br />
--<br />
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules<br />
--<br />
-- ATTENTION:<br />
-- Please do NOT rename this module - it has to be identical on all wikis.<br />
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT<br />
-- Please do not modify it anywhere else, as it may get copied and override your changes.<br />
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT<br />
--<br />
-- DESCRIPTION:<br />
-- The "msg" function uses a Commons dataset to translate a message<br />
-- with a given key (e.g. source-table), plus optional arguments<br />
-- to the wiki markup in the current content language.<br />
-- Use lang=xx to set language. Example:<br />
--<br />
-- {{#invoke:TNT | msg<br />
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab --><br />
-- | source-table <!-- uses a translation message with id = "source-table" --><br />
-- | param1 }} <!-- optional parameter --><br />
--<br />
--<br />
-- The "doc" function will generate the <templatedata> parameter documentation for templates.<br />
-- This way all template parameters can be stored and localized in a single Commons dataset.<br />
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.<br />
--<br />
-- {{#invoke:TNT | doc | Graph:Lines }}<br />
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab<br />
-- if the current page is Template:Graph:Lines/doc<br />
--<br />
<br />
local p = {}<br />
local i18nDataset = 'I18n/Module:TNT.tab'<br />
<br />
-- Forward declaration of the local functions<br />
local sanitizeDataset, loadData, link, formatMessage<br />
<br />
function p.msg(frame)<br />
local dataset, id<br />
local params = {}<br />
local lang = nil<br />
for k, v in pairs(frame.args) do<br />
if k == 1 then<br />
dataset = mw.text.trim(v)<br />
elseif k == 2 then<br />
id = mw.text.trim(v)<br />
elseif type(k) == 'number' then<br />
params[k - 2] = mw.text.trim(v)<br />
elseif k == 'lang' and v ~= '_' then<br />
lang = mw.text.trim(v)<br />
end<br />
end<br />
return formatMessage(dataset, id, params, lang)<br />
end<br />
<br />
-- Identical to p.msg() above, but used from other lua modules<br />
-- Parameters: name of dataset, message key, optional arguments<br />
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')<br />
function p.format(dataset, key, ...)<br />
local checkType = require('libraryUtil').checkType<br />
checkType('format', 1, dataset, 'string')<br />
checkType('format', 2, key, 'string')<br />
return formatMessage(dataset, key, {...})<br />
end<br />
<br />
<br />
-- Identical to p.msg() above, but used from other lua modules with the language param<br />
-- Parameters: language code, name of dataset, message key, optional arguments<br />
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')<br />
function p.formatInLanguage(lang, dataset, key, ...)<br />
local checkType = require('libraryUtil').checkType<br />
checkType('formatInLanguage', 1, lang, 'string')<br />
checkType('formatInLanguage', 2, dataset, 'string')<br />
checkType('formatInLanguage', 3, key, 'string')<br />
return formatMessage(dataset, key, {...}, lang)<br />
end<br />
<br />
-- Obsolete function that adds a 'c:' prefix to the first param.<br />
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'<br />
function p.link(frame)<br />
return link(frame.args[1])<br />
end<br />
<br />
function p.doc(frame)<br />
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])<br />
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..<br />
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})<br />
end<br />
<br />
function p.getTemplateData(dataset)<br />
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages<br />
local data = loadData(dataset)<br />
local names = {}<br />
for _, field in ipairs(data.schema.fields) do<br />
table.insert(names, field.name)<br />
end<br />
<br />
local params = {}<br />
local paramOrder = {}<br />
for _, row in ipairs(data.data) do<br />
local newVal = {}<br />
local name = nil<br />
for pos, columnName in ipairs(names) do<br />
if columnName == 'name' then<br />
name = row[pos]<br />
else<br />
newVal[columnName] = row[pos]<br />
end<br />
end<br />
if name then<br />
params[name] = newVal<br />
table.insert(paramOrder, name)<br />
end<br />
end<br />
<br />
-- Work around json encoding treating {"1":{...}} as an [{...}]<br />
params['zzz123']=''<br />
<br />
local json = mw.text.jsonEncode({<br />
params=params,<br />
paramOrder=paramOrder,<br />
description=data.description<br />
})<br />
<br />
json = string.gsub(json,'"zzz123":"",?', "")<br />
<br />
return json<br />
end<br />
<br />
-- Local functions<br />
<br />
sanitizeDataset = function(dataset)<br />
if not dataset then<br />
return nil<br />
end<br />
dataset = mw.text.trim(dataset)<br />
if dataset == '' then<br />
return nil<br />
elseif string.sub(dataset,-4) ~= '.tab' then<br />
return dataset .. '.tab'<br />
else<br />
return dataset<br />
end<br />
end<br />
<br />
loadData = function(dataset, lang)<br />
dataset = sanitizeDataset(dataset)<br />
if not dataset then<br />
error(formatMessage(i18nDataset, 'error_no_dataset', {}))<br />
end<br />
<br />
-- Give helpful error to thirdparties who try and copy this module.<br />
if not mw.ext or not mw.ext.data or not mw.ext.data.get then<br />
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)<br />
end<br />
<br />
local data = mw.ext.data.get(dataset, lang)<br />
<br />
if data == false then<br />
if dataset == i18nDataset then<br />
-- Prevent cyclical calls<br />
error('Missing Commons dataset ' .. i18nDataset)<br />
else<br />
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))<br />
end<br />
end<br />
return data<br />
end<br />
<br />
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix<br />
link = function(dataset)<br />
return 'c:Data:' .. mw.text.trim(dataset or '')<br />
end<br />
<br />
formatMessage = function(dataset, key, params, lang)<br />
for _, row in pairs(loadData(dataset, lang).data) do<br />
local id, msg = unpack(row)<br />
if id == key then<br />
local result = mw.message.newRawMessage(msg, unpack(params or {}))<br />
return result:plain()<br />
end<br />
end<br />
if dataset == i18nDataset then<br />
-- Prevent cyclical calls<br />
error('Invalid message key "' .. key .. '"')<br />
else<br />
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))<br />
end<br />
end<br />
<br />
return p</div>
meta>ExE Boss