Template:GetMasterCategoryList

From Pathfinder Wiki
Revision as of 22:37, 29 January 2021 by Jomegat bot (talk | contribs) (Switch to one-page localizer)

This template outputs a list of language-appropriate category links separated by <br/> tags. Each link indicates a Master Award to which an honor belongs. It was designed to be used by the honor_infobox template. The display names of the links are translated.

Example

{{GetMasterCategoryList
|category=Arts, Crafts and Hobbies
|master1=Wilderness
|master2=Conservation
}}


Artisan Master Award
Wilderness Master Award
Conservation Master Award

Mechanics

The output list is stored in a variable called mlist (master list) and that is emitted at the end of the template with {{#var:mlist}}.

It starts by looking at the {{{category}}} parameter and assigning a mlist to one of the category-based Master Awards. Not every honor category results in a Master Award, so the switch statement doesn't deal with all of the known categories. In other words, mlist may or may not be empty when we come out of the switch statement.

It then looks to see if the {{{master1}}} argument specified that the honor is part of some other Master Award, and if it is, it adds that to mlist. If mlist already has something assigned to it, the code will append mlist with a <br/> tag before appending the master award category.

The category link it actually adds will be [[Category:AY Honors/some master award/language]], where some master award is constructed by appending {{{master}}} to "Master Award". So we'd get for example, "Artisan Master Award". The /language part is added by the {{GetLangSuffix}} call.

Category links can display something other than the category name, and in our case, that's what we want to do. We don't want to see "Category", nor do we want to see the "AY Honors/" part of the category name. That's a file organization detail, not something to display. Further, the category name is in English, which will not do if the invoking page is not English. So instead, we grab the Localized name of the master award, by fetching it from {{:Localization:English Name of Master Award{{GetLangSuffix}}}}.

After the switch statement we have this:
{{#if:{{{master1|}}}|...
The goal of that statement is so that we can add a <br> to mlist if the {{{master1}}} parameter was provided. Then :
{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}} Which checks to see if we had assigned anything to mlist in the switch statement previously, and if we did, it redefines mlist ({{#vardefine:mlist...) by repeating the contents of mlist ({{#var:mlist}}) followed by the line break (<br>). It then repeats similar logic to append the category link to mlist:
{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master1}}} Master Award{{GetLangSuffix}}{{!}}{{Localize|{{{master1}}} Master Award}}]]}}

As with the category-based logic in the switch statement, we are dealing with localization here too using very similar logic (using {{GetLangSuffix}} to link to the correct category, and the {{:Template:Translation...}} magic) just as before.

It then repeats that logic using {{{master2}}}.

Note that the {{!}} template is used to output a | within the [[:Category... link so that we can indicate the text displayed as the link. The use of the {{!}} template is necessary to prevent the {{#vardefine...}} function from interpreting it as its own separator.