3,098 bytes added
, 21:13, 15 July 2021
{{Module rating|protected}}
This module has three functions to extract data from [[:Category:Country data templates|country data templates]] (which are used for most [[WP:WPFT|flag templates]]).
=== gettable ===
Extracts all parameters from a data template and returns them as a Lua table. This function is only usable from other Lua modules; invoke it using <code>require('Module:CountryData').gettable(''parameters'')</code>.
The first parameter is the <code>frame</code> of the invoking module; the second is the country or other entity to get the data of. The optional third parameter is a table of parameters to pass into the data template; this may, for example, include {{para|age}} or {{para|mw}}, which are used in the values of some sports alias parameters. E.g.,
<syntaxhighlight lang="Lua">local data = require('Module:CountryData').gettable(frame,"France",{age="20",mw="men's"})</syntaxhighlight>
The function returns an empty table if a data template does not exist or does not conform to the [[WP:WPFT#Basic country data template structure|standard structure]].
=== getalias ===
If used from wikicode, this function returns the value of a single field in a data template. The first parameter is the country or other entity whose data to return; the second is the name of the field. For example, <code>{{((}}#invoke:CountryData|getalias|France|flag alias{{))}}</code> → {{#invoke:CountryData|getalias|France|flag alias}}. The other parameters are {{para|variant}} to return a variant parameter value, with fallback to the main field value if the variant does not exist, and {{para|def}} for the fallback output if the wanted data template or field does not exist, the default for which is a literal "nil".
Note: This is likely not quicker than wikicode-only alternatives such as {{tl|getalias}}, {{tl|getalias2}} and {{tl|pst name}}, because it transcludes the data template from Lua and converts it to a Lua table using the above function, picks the wanted parameter name, and returns it to wikicode, whereas other templates perform two simple non-Lua transclusions to get, in most cases, the same result. The Lua version does have the advantage that using it with a non-existing country data template returns "nil" (or the value of {{para|def}}) rather than a redlink to the data template. See a comparison of the four at [[User:SiBr4/Flagg tests#Lua-based getalias|User:SiBr<sub>4</sub>/Flagg tests#Lua-based getalias]].
=== gettemplate ===
This function concatenates the fields of a data template into a string similar to what you get when transcluding it directly. It can be compared with a direct transclusion to test if a template is being converted to Lua correctly:
<pre>
{{#tag:pre|{{Country data France}}}}
{{#tag:pre|{{#invoke:CountryData|gettemplate|France}}}}
</pre>
gives
{{#tag:pre|{{Country data France}}}}
{{#tag:pre|{{#invoke:CountryData|gettemplate|France}}}}
Note that, like with all Lua tables, the order of entries is not preserved, so the parameters are mixed up.
<includeonly>{{Sandbox other | |
[[Category:Flag template system]]
}}</includeonly>