Template:Recipe: Difference between revisions

From Against the Storm Official Wiki
(Connecting to the new template modules that are easier to maintain)
(BIG UPDATE! Updated to use new RecipeController. Updated doc to include services and examples)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
<includeonly>{{#invoke: Recipe|render
<includeonly>{{#invoke: RecipeController | renderRecipe
| product= {{{ 1|{{{product|}}} }}}  
    | product = {{{product| {{{1|}}} }}}  
| building={{{ 2|{{{building|}}} }}}  
    | building = {{{building| {{{2|}}} }}}  
| ingredient={{{ingredient|}}}
    | ingredient = {{{ingredient|}}}
    | display = {{{display|}}}
}}
}}
</includeonly><noinclude>
</includeonly><noinclude>


Generates recipe tables. Use this wherever you need to show how to use [[Goods]], [[Services]], or [[Buildings]].


<code><nowiki>{{#invoke: Recipe|render
== Overview ==
| product= {{{ 1|{{{product|}}} }}}
Create a concise, sortable table using game data to show in-game recipes. The table mimics the layout of the in-game recipe browser, with the building, efficiency of the recipe, number of ingredients, and the product (or service). Optionally, outputs just a list of buildings (or products or services at a building) with their efficiency stars.
| building={{{ 2|{{{building|}}} }}}
| ingredient={{{ingredient|}}}
}}</nowiki></code>


=== Links to Resource Pages ===


This template is used like this:
Links within the table point to the product's or service's page and the anchor corresponding to its location in the table. Goods in ingredients columns will point to the recipes where that good is a product, so you can see where it comes from. Goods in the product column will point to the recipes where that good is an ingredient, so you can see where it can be used.
<code><nowiki>{{Recipe|product|building|ingredient}}</nowiki></code>


== Parameters ==


This template calls <code>renderRecipe</code> in '''Module:RenderRecipe''' to get recipes for a product and/or a building. This will generate a new wikitable full of content from the game: buildings, stars of efficiency, ingredients, and products.
At least one of these is required. If the names provided are not spelled correctly (including punctuation), matching their in-game names, the recipe will return an error.


This template standardizes the display of recipes throughout this wiki and greatly simplifies the amount of writing that is necessary when adding new content pages, especially for resources and buildings.
{| class="wikitable"
! Parameter !! Type !! Description
|-
| product || string || The name of the product or service associated with the recipe. Can be used in conjunction with <code>building</code> to display exactly one recipe.
|-
| building || string || The name of the building where the recipe is produced. Can be used in conjunction with <code>product</code> to display exactly one recipe.
|-
| ingredient || string || The name of an ingredient in a recipe. May result in a very long table.
|-
| display || "list" || If <code>display=list</code> is present at the end of the template call, it overrides the default use of a wikitable to display the recipe. Instead, it will produce a list of buildings with their efficiency stars, each on their own line, without any ingredients or product or service names or icons. Or, if you've specified the building, it displays a list of products with their efficiency stars. Useful for populating larger tables or between paragraphs where displaying the entire recipe isn't relevant.
|}
 
== Errors ==
 
When a product, service, building, or ingredient is not spelled correctly or is not a valid name, the template returns an error message to help you locate the spelling or name mistake.
 
'''Example:'''
 
Broken: <code><nowiki>{{Recipe|building=Alchemists' Hut}}</nowiki></code>


{{Recipe|building=Alchemists' Hut}}


== Usage ==
Fixed: <code><nowiki>{{Recipe|building=Alchemist's Hut}}</nowiki></code>


Giving the template both a product and a building will result in a table with exactly one recipe. Giving the template either a product or a building will result in a table with (usually) more than one row. If nothing is provided, an error will appear identifying the expectation.
{{Recipe|building=Alchemist's Hut}}


Here are ways to call the template, as they would be written in the article calling the template:
There may be cases where the name you should use to look up a good or building is not the right name. Please post these to this template's discussion page.


{| class="wikitable"
== Examples ==
! Argument !! Examples !! Expected outcome
 
=== Basic Usage for Products and Buildings ===
 
A standard use of the template to show exactly one recipe for a product or service, in one building:
 
<pre>{{Recipe|Crystalized Dew|Brickyard}}</pre>
 
Yields:
 
{{Recipe|Crystalized Dew|Brickyard}}
 
Alternatively, for a service building:
 
<pre>{{Recipe|Leisure|Tavern}}</pre>
 
Yields:
 
{{Recipe|Leisure|Tavern}}
 
Here are several ways to call the template for products and buildings.
 
{| class="wikitable mw-collapsible"
! Parameter(s) !! Example(s) !! Expected outcome
|-
|-
| None
| no parameters || <code><nowiki>{{Recipe}}</nowiki></code> || an error
| <code><nowiki>{{Recipe}}</nowiki></code>
| An error
|-
|-
| Product and building
| product (or service) and building
| style="white-space: nowrap" | <code><nowiki>{{Recipe|Crystalized Dew|Brickyard}}</nowiki></code> <br> <code><nowiki>{{Recipe|product=Crystalized Dew|building=Brickyard}}</nowiki></code>
|style="white-space: nowrap"| <code><nowiki>{{Recipe|Crystalized Dew|Brickyard}}</nowiki></code> <br> <code><nowiki>{{Recipe|product=Crystalized Dew|building=Brickyard}}</nowiki></code>
| A table with one row.
| A table with exactly one row.
|-
|-
| Product only
| product (or service) only
| style="white-space: nowrap" | <code><nowiki>{{Recipe|Pie}}</nowiki></code> <br> <code><nowiki>{{Recipe|product=Pie}}</nowiki></code>
|style="white-space: nowrap"| <code><nowiki>{{Recipe|Pie}}</nowiki></code> <br> <code><nowiki>{{Recipe|product=Pie}}</nowiki></code>
| A table with several rows, one for each building in which '''Pie''' can be produced.
| A table with several rows, one for each building in which '''Pie''' can be produced.
|-
|-
| Building only
| building only
| style="white-space: nowrap" | <code><nowiki>{{Recipe||Scribe}}</nowiki></code> ''(note the double pipe)'' <br> <code><nowiki>{{Recipe|building=Scribe}}</nowiki></code>
|style="white-space: nowrap"| <code><nowiki>{{Recipe||Market}}</nowiki></code> ''(note the double pipe)'' <br> <code><nowiki>{{Recipe|building=Market}}</nowiki></code>
| A table with several rows, one for each product that can be produced in the '''Scribe.'''
| A table with several rows, one for each service provided by the '''Market.'''
|-
| product (or service), but with output override
|style="white-space: nowrap| <code><nowiki>{{Recipe|Crystalized Dew|display=list}}</nowiki></code>
| A short list of buildings and their efficiency stars that easily fit within another table:<br />
{{Recipe|Crystalized Dew|display=list}}
|}
|}


=== Ingredients ===
Unlike when specifying the product (or service) and/or building, when you specify the ingredient, you explicitly must name the parameter with <code>ingredient=</code> in the template. Currently, you cannot select both a product and an ingredient (for example, all recipes where Berries are the ingredient and Pie is the product), because this is redundant with the product parameter by itself (since there is currently only one arrangement of ingredients and options that will make a product).
The results of specifying the ingredient without also filtering on a building can display a long table. But on a resource's page, this information is expected to be valuable.
<pre>{{Recipe|ingredient=Wine}}</pre>
Yields:
{{Recipe|ingredient=Wine}}
<pre>{{Recipe|building=Lumber Mill|ingredient=Wine}}</pre>
Yields:
{{Recipe|building=Lumber Mill|ingredient=Wine}}
=== Further Examples and Errors ===


== Examples ==
The following are generated by calling the template as shown in the parameter examples table above.


The following are generated by calling the template, as shown in the examples in the table above.
1. product and building:


<pre>{{Recipe|Crystalized Dew|Brickyard}}</pre>


1. <code><nowiki>{{Recipe|Crystalized Dew|Brickyard}}</nowiki></code> yields:
Yields:


{{Recipe|Crystalized Dew|Brickyard}}
{{Recipe|Crystalized Dew|Brickyard}}


2. product only
<pre>{{Recipe|Pie}}</pre>


2. <code><nowiki>{{Recipe|Pie}}</nowiki></code> yields:
Yields:


{{Recipe|Pie}}
{{Recipe|Pie}}


3. building only
<pre>{{Recipe|building=Market}}</pre>
Yields:
{{Recipe|building=Market}}
4. with the output override
<pre>{{Recipe|Crystalized Dew|display=list}}</pre>
Yields:
{{Recipe|Crystalized Dew|display=list}}
5 with the output override but specifying a building


3. <code><nowiki>{{Recipe||Scribe}}</nowiki></code> yields:
<pre>{{Recipe|building=Beanery|display=list}}</pre>


{{Recipe||Scribe}}
Yields:


{{Recipe|building=Beanery|display=list}}


The following are error states generated by calling the template incorrectly.
The following are error states generated by calling the template incorrectly.


6. with no parameters


4. With no arguments, <code><nowiki>{{Recipe}}</nowiki></code> yields:
<pre>{{Recipe}}</pre>


'''{{Recipe}}'''
Yields:


{{Recipe}}


5. Skipping the double pipe AND not specifying that the provided name is the building in <code><nowiki>{{Recipe|Scribe}}</nowiki></code> yields:
7. using only one pipe and not specifying that the provided name is the building


'''{{Recipe|Scribe}}'''
<pre>{{Recipe|Scribe}}</pre>


Yields:


6. Mixing naming the arguments and not naming the arguments <code><nowiki>{{Recipe|product=Eggs|Ranch}}</nowiki></code> yields:
{{Recipe|Scribe}}


'''{{Recipe|product=Eggs|Ranch}}'''
8. asking for products or buildings with no recipes


<pre>{{Recipe|building=Small Warehouse}}</pre>


7. Specifying products or buildings with no recipes <code><nowiki>{{Recipe|Market}}</nowiki></code> yields:
Yields:


'''{{Recipe|building=Market}}'''</noinclude>
{{Recipe|building=Small Warehouse}}
</noinclude>

Latest revision as of 03:38, 27 November 2023


Generates recipe tables. Use this wherever you need to show how to use Goods, Services, or Buildings.

Overview

Create a concise, sortable table using game data to show in-game recipes. The table mimics the layout of the in-game recipe browser, with the building, efficiency of the recipe, number of ingredients, and the product (or service). Optionally, outputs just a list of buildings (or products or services at a building) with their efficiency stars.

Links to Resource Pages

Links within the table point to the product's or service's page and the anchor corresponding to its location in the table. Goods in ingredients columns will point to the recipes where that good is a product, so you can see where it comes from. Goods in the product column will point to the recipes where that good is an ingredient, so you can see where it can be used.

Parameters

At least one of these is required. If the names provided are not spelled correctly (including punctuation), matching their in-game names, the recipe will return an error.

Parameter Type Description
product string The name of the product or service associated with the recipe. Can be used in conjunction with building to display exactly one recipe.
building string The name of the building where the recipe is produced. Can be used in conjunction with product to display exactly one recipe.
ingredient string The name of an ingredient in a recipe. May result in a very long table.
display "list" If display=list is present at the end of the template call, it overrides the default use of a wikitable to display the recipe. Instead, it will produce a list of buildings with their efficiency stars, each on their own line, without any ingredients or product or service names or icons. Or, if you've specified the building, it displays a list of products with their efficiency stars. Useful for populating larger tables or between paragraphs where displaying the entire recipe isn't relevant.

Errors

When a product, service, building, or ingredient is not spelled correctly or is not a valid name, the template returns an error message to help you locate the spelling or name mistake.

Example:

Broken: {{Recipe|building=Alchemists' Hut}}

No recipes found at building: Alchemists' Hut.


Fixed: {{Recipe|building=Alchemist's Hut}}

3 recipes in the Alchemist's Hut.
BuildingEfficiencyIngredient #1Ingredient #2Ingredient #3Product
★★
00:42
2
2
2
2
3
3
8
12
16
2
★★
02:06
3
3
3
3
3
3
4
5
2
2
10
Tea Tea
★★
01:24
3
3
3
3
3
3
10
Wine Wine


There may be cases where the name you should use to look up a good or building is not the right name. Please post these to this template's discussion page.

Examples

Basic Usage for Products and Buildings

A standard use of the template to show exactly one recipe for a product or service, in one building:

{{Recipe|Crystalized Dew|Brickyard}}

Yields:

1 recipe in the Brickyard for Crystalized Dew.
BuildingEfficiencyIngredient #1Ingredient #2Ingredient #3Product

00:42
3
3
3
3
4
4
10
14
18
2


Alternatively, for a service building:

{{Recipe|Leisure|Tavern}}

Yields:

1 recipe in the Tavern for Leisure.
BuildingEfficiencyIngredientService

1
Ale Ale
1


Here are several ways to call the template for products and buildings.

Parameter(s) Example(s) Expected outcome
no parameters {{Recipe}} an error
product (or service) and building {{Recipe|Crystalized Dew|Brickyard}}
{{Recipe|product=Crystalized Dew|building=Brickyard}}
A table with exactly one row.
product (or service) only {{Recipe|Pie}}
{{Recipe|product=Pie}}
A table with several rows, one for each building in which Pie can be produced.
building only {{Recipe||Market}} (note the double pipe)
{{Recipe|building=Market}}
A table with several rows, one for each service provided by the Market.
product (or service), but with output override {{Recipe|Crystalized Dew|display=list}} A short list of buildings and their efficiency stars that easily fit within another table:

Ingredients

Unlike when specifying the product (or service) and/or building, when you specify the ingredient, you explicitly must name the parameter with ingredient= in the template. Currently, you cannot select both a product and an ingredient (for example, all recipes where Berries are the ingredient and Pie is the product), because this is redundant with the product parameter by itself (since there is currently only one arrangement of ingredients and options that will make a product).

The results of specifying the ingredient without also filtering on a building can display a long table. But on a resource's page, this information is expected to be valuable.

{{Recipe|ingredient=Wine}}

Yields:

5 recipes using Wine.
BuildingEfficiencyIngredient #1Ingredient #2Product or Service

01:24
4
4
10
3
3
8

01:24
4
4
10
3
3
8

01:24
4
4
10
3
3
8
★★★
01:03
2
2
6
1
1
8
★★★
01:03
2
2
6
1
1
8

00:42
5
5
5
5
5
Ale Ale
5
Tea Tea
2
★★
00:42
4
4
4
4
4
Ale Ale
4
Tea Tea
2
★★
00:42
4
4
4
4
4
Ale Ale
4
Tea Tea
2

1
1

1
1

1
1

1
1


{{Recipe|building=Lumber Mill|ingredient=Wine}}

Yields:

1 recipes using Wine in the Lumber Mill.
BuildingEfficiencyIngredient #1Ingredient #2Product

01:24
4
4
10
3
3
8


Further Examples and Errors

The following are generated by calling the template as shown in the parameter examples table above.

1. product and building:

{{Recipe|Crystalized Dew|Brickyard}}

Yields:

1 recipe in the Brickyard for Crystalized Dew.
BuildingEfficiencyIngredient #1Ingredient #2Ingredient #3Product

00:42
3
3
3
3
4
4
10
14
18
2


2. product only

{{Recipe|Pie}}

Yields:

2 recipes for Pie.
BuildingEfficiencyIngredient #1Ingredient #2Product
★★
02:06
6
4
4
4
4
4
10
Pie Pie
★★
02:06
6
4
4
4
4
4
10
Pie Pie
★★★
01:45
6
3
3
3
3
3
10
Pie Pie


3. building only

{{Recipe|building=Market}}

Yields:

2 recipes in the Market.
BuildingEfficiencyIngredientService

1
1

1
Tea Tea
1


4. with the output override

{{Recipe|Crystalized Dew|display=list}}

Yields:


5 with the output override but specifying a building

{{Recipe|building=Beanery|display=list}}

Yields:


The following are error states generated by calling the template incorrectly.

6. with no parameters

{{Recipe}}

Yields:

Unknown parameter in Recipe template.


7. using only one pipe and not specifying that the provided name is the building

{{Recipe|Scribe}}

Yields:

No recipes found for product: Scribe.


8. asking for products or buildings with no recipes

{{Recipe|building=Small Warehouse}}

Yields:

No recipes found at building: Small Warehouse.