Difference between revisions of "Template:GetMasterCategoryList"

From Pathfinder Wiki
Line 31: Line 31:
  
 
</noinclude><includeonly>{{#switch:{{{category}}}
 
</noinclude><includeonly>{{#switch:{{{category}}}
  | Arts and Crafts ={{#vardefine:mlist|[[:Category:AY Honors/Artisan Master Award{{!}}Artisan Master Award]]}}
 
 
   | Arts, Crafts and Hobbies ={{#vardefine:mlist|[[:Category:AY Honors/Artisan Master Award{{!}}Artisan Master Award]]}}
 
   | Arts, Crafts and Hobbies ={{#vardefine:mlist|[[:Category:AY Honors/Artisan Master Award{{!}}Artisan Master Award]]}}
  | Arts, Crafts, and Hobbies ={{#vardefine:mlist|[[:Category:AY Honors/Artisan Master Award{{!}}Artisan Master Award]]}}
 
 
   | Outdoor Industries ={{#vardefine:mlist|[[:Category:AY Honors/Farming Master Award{{!}}Farming Master Award]]}}
 
   | Outdoor Industries ={{#vardefine:mlist|[[:Category:AY Honors/Farming Master Award{{!}}Farming Master Award]]}}
 
   | Household Arts ={{#vardefine:mlist|[[:Category:AY Honors/Homemaking Master Award{{!}}Homemaking Master Award]]}}
 
   | Household Arts ={{#vardefine:mlist|[[:Category:AY Honors/Homemaking Master Award{{!}}Homemaking Master Award]]}}
}}{{#if:{{{master|}}}|{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master}}} Master Award{{!}}{{{master}}} Master Award]]}}}}{{#if:{{{master2|}}}|{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master2}}} Master Award{{!}}{{{master2}}} Master Award]]}}}}{{#var:mlist}}</includeonly>
+
}}
 +
{{#if:{{{master|}}}|{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master}}} Master Award{{!}}{{{master}}} Master Award]]}}}}
 +
{{#if:{{{master2|}}}|{{#varexists:mlist|{{#vardefine:mlist|{{#var:mlist}}<br>}}}}{{#vardefine:mlist|{{#var:mlist}}[[:Category:AY Honors/{{{master2}}} Master Award{{!}}{{{master2}}} Master Award]]}}}}{{#var:mlist}}</includeonly>

Revision as of 16:43, 16 January 2021

This template outputs a <br/> separated list of category links to the Master Awards an honor belongs to. It was designed to be used by the honor_infobox template.

Example

{{GetMasterCategoryList
|category=Arts, Crafts and Hobbies
|master=Crime
|master2=Punishment
}}


Artisan Master Award
Crime Master Award
Punishment 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.

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 {{{master}}} 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. It then repeats that logic using {{{master2}}}.

After the switch statement we have this:
{{#if:{{{master|}}}|...
The goal of that statement is so that we can add a <br> to mlist if the {{{master}}} 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/{{{master}}} Master Award{{!}}{{{master}}} Master Award]]}}

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.