<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.scout.clutch.engineering/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Featherless</id>
	<title>Scout Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.scout.clutch.engineering/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Featherless"/>
	<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/wiki/Special:Contributions/Featherless"/>
	<updated>2026-04-17T18:26:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Volume&amp;diff=43</id>
		<title>Volume</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Volume&amp;diff=43"/>
		<updated>2025-09-04T18:16:38Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;The volume property must be one of the following values:  * &amp;lt;code&amp;gt;gal&amp;lt;/code&amp;gt;: Gallons * &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;: Liters&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The volume property must be one of the following values:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;gal&amp;lt;/code&amp;gt;: Gallons&lt;br /&gt;
* &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt;: Liters&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Currency&amp;diff=42</id>
		<title>Currency</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Currency&amp;diff=42"/>
		<updated>2025-09-04T18:06:36Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;The currency property of a fact must be a valid [https://www.iso.org/iso-4217-currency-codes.html ISO 4127] 3-letter currency code.  == Examples ==  The following are valid currency codes:  * &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;GBP&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The currency property of a [[fact]] must be a valid [https://www.iso.org/iso-4217-currency-codes.html ISO 4127] 3-letter currency code.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are valid currency codes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;GBP&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=41</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=41"/>
		<updated>2025-09-04T18:04:10Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Associated properties ==&lt;br /&gt;
&lt;br /&gt;
Fuel price requires the following additional properties:&lt;br /&gt;
&lt;br /&gt;
* [[currency]]&lt;br /&gt;
* [[volume]]&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
The fuel_price fact requires a [[fuel type]] specifier.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e0 (no ethanol)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e0||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e15&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e15||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e25&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e25||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e85&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e85||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e100 (pure ethanol)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e100||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diesel ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| Standard diesel&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| Premium diesel&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:premium||1.509}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Premium diesel (Shell V-Power, BP Ultimate, Total Excellium, etc.) uses the same base diesel fuel as regular diesel but with enhanced additive packages, higher cetane ratings (53-55 vs 51), and cleaning agents for improved engine performance and protection.&lt;br /&gt;
&lt;br /&gt;
All diesel fuels can have an optional biodiesel specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| b0 (pure petroleum diesel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b0||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b5&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b5||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b7&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b7||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b20&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b20||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b100 (pure biodiesel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b100||1.389}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special Fuels ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| LPG (Liquefied Petroleum Gas)&lt;br /&gt;
| {{Fact|fuel_price|subkey=lpg||2.199}}&lt;br /&gt;
|-&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| {{Fact|fuel_price|subkey=hydrogen||12.99}}&lt;br /&gt;
|-&lt;br /&gt;
| E85 (85% Ethanol Flex Fuel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=e85||2.899}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; E85 should be used as a special fuel when the octane value is unknown or not advertised at the fuel pump. If the octane rating is known (typically 105-115 range), use the specific octane with e85 ethanol specifier instead (e.g., &amp;lt;code&amp;gt;fuel_price:105:e85&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=95:e10||1.459}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:b7||1.389}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:premium||1.509}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|-&lt;br /&gt;
| Cash price (US only)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10:cash||3.299}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:cash||3.199}}&lt;br /&gt;
| Cash payment price in regions with cash/credit distinction.&lt;br /&gt;
|-&lt;br /&gt;
| Credit price (US only)  &lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10:credit||3.359}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:credit||3.259}}&lt;br /&gt;
| Credit/debit card payment price in regions with cash/credit distinction.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=40</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=40"/>
		<updated>2025-09-04T18:03:50Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Associated properties ==&lt;br /&gt;
&lt;br /&gt;
Fuel price requires the following additional properties:&lt;br /&gt;
&lt;br /&gt;
- [[currency]]&lt;br /&gt;
- [[volume]]&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
The fuel_price fact requires a [[fuel type]] specifier.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e0 (no ethanol)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e0||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e15&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e15||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e25&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e25||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e85&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e85||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e100 (pure ethanol)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e100||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diesel ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| Standard diesel&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| Premium diesel&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:premium||1.509}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Premium diesel (Shell V-Power, BP Ultimate, Total Excellium, etc.) uses the same base diesel fuel as regular diesel but with enhanced additive packages, higher cetane ratings (53-55 vs 51), and cleaning agents for improved engine performance and protection.&lt;br /&gt;
&lt;br /&gt;
All diesel fuels can have an optional biodiesel specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| b0 (pure petroleum diesel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b0||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b5&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b5||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b7&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b7||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b20&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b20||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b100 (pure biodiesel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b100||1.389}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special Fuels ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| LPG (Liquefied Petroleum Gas)&lt;br /&gt;
| {{Fact|fuel_price|subkey=lpg||2.199}}&lt;br /&gt;
|-&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| {{Fact|fuel_price|subkey=hydrogen||12.99}}&lt;br /&gt;
|-&lt;br /&gt;
| E85 (85% Ethanol Flex Fuel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=e85||2.899}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; E85 should be used as a special fuel when the octane value is unknown or not advertised at the fuel pump. If the octane rating is known (typically 105-115 range), use the specific octane with e85 ethanol specifier instead (e.g., &amp;lt;code&amp;gt;fuel_price:105:e85&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=95:e10||1.459}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:b7||1.389}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:premium||1.509}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|-&lt;br /&gt;
| Cash price (US only)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10:cash||3.299}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:cash||3.199}}&lt;br /&gt;
| Cash payment price in regions with cash/credit distinction.&lt;br /&gt;
|-&lt;br /&gt;
| Credit price (US only)  &lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10:credit||3.359}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:credit||3.259}}&lt;br /&gt;
| Credit/debit card payment price in regions with cash/credit distinction.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=39</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=39"/>
		<updated>2025-09-04T18:02:40Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Undo revision 38 by Featherless (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
The fuel_price fact requires a [[fuel type]] specifier.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e0 (no ethanol)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e0||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e15&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e15||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e25&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e25||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e85&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e85||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e100 (pure ethanol)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e100||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diesel ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| Standard diesel&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| Premium diesel&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:premium||1.509}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Premium diesel (Shell V-Power, BP Ultimate, Total Excellium, etc.) uses the same base diesel fuel as regular diesel but with enhanced additive packages, higher cetane ratings (53-55 vs 51), and cleaning agents for improved engine performance and protection.&lt;br /&gt;
&lt;br /&gt;
All diesel fuels can have an optional biodiesel specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| b0 (pure petroleum diesel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b0||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b5&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b5||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b7&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b7||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b20&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b20||1.389}}&lt;br /&gt;
|-&lt;br /&gt;
| b100 (pure biodiesel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=diesel:b100||1.389}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special Fuels ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| LPG (Liquefied Petroleum Gas)&lt;br /&gt;
| {{Fact|fuel_price|subkey=lpg||2.199}}&lt;br /&gt;
|-&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| {{Fact|fuel_price|subkey=hydrogen||12.99}}&lt;br /&gt;
|-&lt;br /&gt;
| E85 (85% Ethanol Flex Fuel)&lt;br /&gt;
| {{Fact|fuel_price|subkey=e85||2.899}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; E85 should be used as a special fuel when the octane value is unknown or not advertised at the fuel pump. If the octane rating is known (typically 105-115 range), use the specific octane with e85 ethanol specifier instead (e.g., &amp;lt;code&amp;gt;fuel_price:105:e85&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=95:e10||1.459}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:b7||1.389}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:premium||1.509}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|-&lt;br /&gt;
| Cash price (US only)&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10:cash||3.299}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:cash||3.199}}&lt;br /&gt;
| Cash payment price in regions with cash/credit distinction.&lt;br /&gt;
|-&lt;br /&gt;
| Credit price (US only)  &lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10:credit||3.359}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=diesel:credit||3.259}}&lt;br /&gt;
| Credit/debit card payment price in regions with cash/credit distinction.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=38</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=38"/>
		<updated>2025-09-04T18:02:15Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Moving fuel type specifiers out to a separate document.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
The fuel_price fact requires a [[fuel type]] specifier.&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=32</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=32"/>
		<updated>2025-09-02T17:28:22Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity|subkey=car_wash||available}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel_price|subkey=87||1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Fuel_type&amp;diff=31</id>
		<title>Fuel type</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Fuel_type&amp;diff=31"/>
		<updated>2025-09-02T17:14:13Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fuel comes in a variety of categories and variations. Facts such as {{fact|fuel_price}} require a fuel type specifier, which can be constructed using the information documented here.&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
&lt;br /&gt;
Fuel is split into the following categories.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| 85 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:85&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:87&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 89 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:89&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 91 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:91&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 93 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:93&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 94 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:94&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diesel ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| Diesel&lt;br /&gt;
| &amp;lt;code&amp;gt;:diesel&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Premium diesel&lt;br /&gt;
| &amp;lt;code&amp;gt;:diesel:premium&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Liquefied petroleum gas ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| LPG&lt;br /&gt;
| &amp;lt;code&amp;gt;:lpg&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hydrogen ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| &amp;lt;code&amp;gt;:hydrogen&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Fuel_type&amp;diff=30</id>
		<title>Fuel type</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Fuel_type&amp;diff=30"/>
		<updated>2025-09-02T17:13:21Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;Fuel comes in a variety of categories and variations. Facts such as {{fact|fuel_type}} require a fuel type specifier, which can be constructed using the information documented here.  == Categories ==  Fuel is split into the following categories.  === Gasoline ===  {| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; |- ! Name ! Fact specifier |- | 85 octane | &amp;lt;code&amp;gt;:85&amp;lt;/code&amp;gt; |- | 87 octane | &amp;lt;code&amp;gt;:87&amp;lt;/code&amp;gt; |- | 89 octane | &amp;lt;code&amp;gt;:89&amp;lt;/code&amp;gt; |- | 91 octane |...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fuel comes in a variety of categories and variations. Facts such as {{fact|fuel_type}} require a fuel type specifier, which can be constructed using the information documented here.&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
&lt;br /&gt;
Fuel is split into the following categories.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| 85 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:85&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:87&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 89 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:89&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 91 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:91&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 93 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:93&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 94 octane&lt;br /&gt;
| &amp;lt;code&amp;gt;:94&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diesel ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| Diesel&lt;br /&gt;
| &amp;lt;code&amp;gt;:diesel&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Premium diesel&lt;br /&gt;
| &amp;lt;code&amp;gt;:diesel:premium&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Liquefied petroleum gas ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| LPG&lt;br /&gt;
| &amp;lt;code&amp;gt;:lpg&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hydrogen ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Fact specifier&lt;br /&gt;
|-&lt;br /&gt;
| Hydrogen&lt;br /&gt;
| &amp;lt;code&amp;gt;:hydrogen&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=29</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=29"/>
		<updated>2025-09-02T17:07:18Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
The fuel_price fact requires a [[fuel type]] specifier.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=89||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=89:e10||1.339}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=28</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=28"/>
		<updated>2025-09-02T17:05:21Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=89||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price|subkey=89:e10||1.339}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=27</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=27"/>
		<updated>2025-09-02T17:04:49Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price|subkey=87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=26</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=26"/>
		<updated>2025-09-02T17:04:26Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price|subkey=87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel&amp;diff=25</id>
		<title>Key:fuel</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel&amp;diff=25"/>
		<updated>2025-09-02T17:02:49Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Featherless moved page Key:fuel to Key:fuel price&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Key:fuel price]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=24</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=24"/>
		<updated>2025-09-02T17:02:49Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Featherless moved page Key:fuel to Key:fuel price&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price:87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price:87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=23</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=23"/>
		<updated>2025-09-02T17:02:05Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel_price}} [[fact]] provides information about the fuel prices at a given station.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price:87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price:87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=22</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=22"/>
		<updated>2025-09-02T16:58:50Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel}} [[fact]] provides information about the fuel available at a given place.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
=== Gasoline ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All gasoline fuels can have an optional ethanol specifier.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
|-&lt;br /&gt;
| e5&lt;br /&gt;
| {{Fact|fuel_price:87:e5||1.339}}&lt;br /&gt;
|-&lt;br /&gt;
| e10&lt;br /&gt;
| {{Fact|fuel_price:87:e10||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=21</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=21"/>
		<updated>2025-09-02T16:56:48Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel}} [[fact]] provides information about the fuel available at a given place.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Sub-types&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&lt;br /&gt;
| Ethanol content&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=20</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=20"/>
		<updated>2025-09-02T16:55:37Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel}} [[fact]] provides information about the fuel available at a given place.&lt;br /&gt;
&lt;br /&gt;
== Fuel types ==&lt;br /&gt;
&lt;br /&gt;
Fuel comes in many varieties.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Example&lt;br /&gt;
! Additional modifiers&lt;br /&gt;
|-&lt;br /&gt;
| 87 octane&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Example&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=19</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=19"/>
		<updated>2025-09-02T16:52:20Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel}} [[fact]] provides information about the fuel available at a given place.&lt;br /&gt;
&lt;br /&gt;
== Values ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Example&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| Fuel price&lt;br /&gt;
| {{Fact|fuel_price:87||1.339}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89||1.899}}&amp;lt;br&amp;gt;{{Fact|fuel_price:89:e10||1.559}}&lt;br /&gt;
| The last-known price for a given fuel type.&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=18</id>
		<title>Key:fuel price</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Key:fuel_price&amp;diff=18"/>
		<updated>2025-09-02T16:40:00Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;The {{Fact|fuel}} fact provides information about the fuel available at a given place.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{Fact|fuel}} [[fact]] provides information about the fuel available at a given place.&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=17</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=17"/>
		<updated>2025-09-02T16:35:10Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity|subkey=car_wash||available}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel|subkey=87||1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=16</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=16"/>
		<updated>2025-09-02T16:35:01Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity|car_wash||available}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel|subkey=87||1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=15</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=15"/>
		<updated>2025-09-02T16:34:26Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity:car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel|subkey=87||1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=14</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=14"/>
		<updated>2025-09-02T16:34:21Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity:car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel|subkey=87||1.316} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=13</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=13"/>
		<updated>2025-09-02T16:32:08Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity:car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel:87|1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=12</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=12"/>
		<updated>2025-09-02T16:28:55Z</updated>

		<summary type="html">&lt;p&gt;Featherless: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity_car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|fuel_87|1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Module:Languages/config&amp;diff=11</id>
		<title>Module:Languages/config</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Languages/config&amp;diff=11"/>
		<updated>2025-09-02T15:10:52Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages/config on Sep 2, 2025  local p = {}  -- Map all known language codes to their autonyms per MediaWiki, then fix up a -- few codes and names that are incorrect in MediaWiki for historical reasons. local languageNamesByCode = mw.language.fetchLanguageNames() languageNamesByCode.gcf = &amp;quot;kréyòl gwadloupéyen&amp;quot; -- Guadeloupean Creole French languageNamesByCode[&amp;quot;sr-cyrl&amp;quot;] = languageNamesByCode[&amp;quot;sr-ec&amp;quot;] language...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages/config on Sep 2, 2025&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Map all known language codes to their autonyms per MediaWiki, then fix up a&lt;br /&gt;
-- few codes and names that are incorrect in MediaWiki for historical reasons.&lt;br /&gt;
local languageNamesByCode = mw.language.fetchLanguageNames()&lt;br /&gt;
languageNamesByCode.gcf = &amp;quot;kréyòl gwadloupéyen&amp;quot; -- Guadeloupean Creole French&lt;br /&gt;
languageNamesByCode[&amp;quot;sr-cyrl&amp;quot;] = languageNamesByCode[&amp;quot;sr-ec&amp;quot;]&lt;br /&gt;
languageNamesByCode[&amp;quot;sr-latn&amp;quot;] = languageNamesByCode[&amp;quot;sr-el&amp;quot;]&lt;br /&gt;
languageNamesByCode[&amp;quot;cnr&amp;quot;] = &amp;quot;Crnogorski&amp;quot; -- Montenegrin language&lt;br /&gt;
&lt;br /&gt;
--- A table mapping language codes to their autonyms. Every language code in&lt;br /&gt;
--- languageCodes must have a pair in this table, but this table has many pairs&lt;br /&gt;
--- that go unused in languageCodes.&lt;br /&gt;
p.languageNamesByCode = languageNamesByCode&lt;br /&gt;
&lt;br /&gt;
--- A table of ISO 639 language codes for the languages used on this wiki,&lt;br /&gt;
--- sorted by autonym. A language code may be included only if there is at least&lt;br /&gt;
--- one content page in the language that has the code in its title (either as a&lt;br /&gt;
--- namespace or a pseudonamespace). Empty categories and redirects don’t count.&lt;br /&gt;
p.languageCodes = {&lt;br /&gt;
	-- After modifying this table, rerun p.languageCodesSortedByName() in the&lt;br /&gt;
	-- debug console below and paste the re-sorted results here. This ensures&lt;br /&gt;
	-- that the codes are sorted by language name.&lt;br /&gt;
	&amp;quot;af&amp;quot;, &amp;quot;ast&amp;quot;, &amp;quot;az&amp;quot;, &amp;quot;id&amp;quot;, &amp;quot;ms&amp;quot;, &amp;quot;bs&amp;quot;, &amp;quot;br&amp;quot;, &amp;quot;ca&amp;quot;, &amp;quot;cs&amp;quot;, &amp;quot;cnr&amp;quot;, &amp;quot;da&amp;quot;, &amp;quot;de&amp;quot;,&lt;br /&gt;
	&amp;quot;et&amp;quot;, &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;eo&amp;quot;, &amp;quot;eu&amp;quot;, &amp;quot;fr&amp;quot;, &amp;quot;fy&amp;quot;, &amp;quot;gd&amp;quot;, &amp;quot;gl&amp;quot;, &amp;quot;hr&amp;quot;, &amp;quot;io&amp;quot;, &amp;quot;ia&amp;quot;,&lt;br /&gt;
	&amp;quot;is&amp;quot;, &amp;quot;it&amp;quot;, &amp;quot;ht&amp;quot;, &amp;quot;gcf&amp;quot;, &amp;quot;ku&amp;quot;, &amp;quot;lv&amp;quot;, &amp;quot;lb&amp;quot;, &amp;quot;lt&amp;quot;, &amp;quot;hu&amp;quot;, &amp;quot;nl&amp;quot;, &amp;quot;no&amp;quot;, &amp;quot;nn&amp;quot;,&lt;br /&gt;
	&amp;quot;oc&amp;quot;, &amp;quot;pl&amp;quot;, &amp;quot;pt&amp;quot;, &amp;quot;ro&amp;quot;, &amp;quot;sc&amp;quot;, &amp;quot;sq&amp;quot;, &amp;quot;sk&amp;quot;, &amp;quot;sl&amp;quot;, &amp;quot;sr-latn&amp;quot;, &amp;quot;fi&amp;quot;, &amp;quot;sv&amp;quot;, &amp;quot;tl&amp;quot;,&lt;br /&gt;
	&amp;quot;vi&amp;quot;, &amp;quot;tr&amp;quot;, &amp;quot;diq&amp;quot;, &amp;quot;el&amp;quot;, &amp;quot;be&amp;quot;, &amp;quot;bg&amp;quot;, &amp;quot;mk&amp;quot;, &amp;quot;mn&amp;quot;, &amp;quot;ru&amp;quot;, &amp;quot;sr&amp;quot;, &amp;quot;uk&amp;quot;, &amp;quot;hy&amp;quot;,&lt;br /&gt;
	&amp;quot;he&amp;quot;, &amp;quot;ar&amp;quot;, &amp;quot;skr&amp;quot;, &amp;quot;fa&amp;quot;, &amp;quot;pnb&amp;quot;, &amp;quot;ps&amp;quot;, &amp;quot;ne&amp;quot;, &amp;quot;mr&amp;quot;, &amp;quot;hi&amp;quot;, &amp;quot;bn&amp;quot;, &amp;quot;pa&amp;quot;, &amp;quot;ta&amp;quot;,&lt;br /&gt;
	&amp;quot;ml&amp;quot;, &amp;quot;si&amp;quot;, &amp;quot;th&amp;quot;, &amp;quot;my&amp;quot;, &amp;quot;ko&amp;quot;, &amp;quot;ka&amp;quot;, &amp;quot;tzm&amp;quot;, &amp;quot;zh-hans&amp;quot;, &amp;quot;zh-hant&amp;quot;, &amp;quot;ja&amp;quot;, &amp;quot;yue&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table of language codes for languages that are only nominally used on this&lt;br /&gt;
--- wiki. A language code is included in this table if there is at least one&lt;br /&gt;
--- non-redirect page in the language, such as a category or template. If there&lt;br /&gt;
--- is a content page in the language, place the code in languageCodes instead.&lt;br /&gt;
--- Unlike the table above, this is sorted by code (and manually).&lt;br /&gt;
p.minorLanguageCodes = {&lt;br /&gt;
	&amp;quot;ab&amp;quot;, &amp;quot;am&amp;quot;, &amp;quot;an&amp;quot;, &amp;quot;as&amp;quot;, &amp;quot;av&amp;quot;, &amp;quot;ay&amp;quot;, &amp;quot;ba&amp;quot;, &amp;quot;bm&amp;quot;, &amp;quot;bo&amp;quot;, &amp;quot;co&amp;quot;, &amp;quot;cy&amp;quot;, &amp;quot;dv&amp;quot;,&lt;br /&gt;
	&amp;quot;ext&amp;quot;, &amp;quot;ga&amp;quot;, &amp;quot;gsw&amp;quot;, &amp;quot;gu&amp;quot;, &amp;quot;ha&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;ig&amp;quot;, &amp;quot;jv&amp;quot;, &amp;quot;kk&amp;quot;, &amp;quot;km&amp;quot;,&lt;br /&gt;
	&amp;quot;kn&amp;quot;, &amp;quot;ky&amp;quot;, &amp;quot;la&amp;quot;, &amp;quot;ldn&amp;quot;, &amp;quot;li&amp;quot;, &amp;quot;lo&amp;quot;, &amp;quot;mg&amp;quot;, &amp;quot;min&amp;quot;, &amp;quot;mt&amp;quot;, &amp;quot;nan&amp;quot;, &amp;quot;nds&amp;quot;,&lt;br /&gt;
	&amp;quot;nds-nl&amp;quot;, &amp;quot;om&amp;quot;, &amp;quot;or&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;sd&amp;quot;, &amp;quot;so&amp;quot;, &amp;quot;su&amp;quot;, &amp;quot;sw&amp;quot;, &amp;quot;te&amp;quot;,&lt;br /&gt;
    &amp;quot;tg&amp;quot;, &amp;quot;tk&amp;quot;, &amp;quot;ug&amp;quot;, &amp;quot;ur&amp;quot;, &amp;quot;uz&amp;quot;, &amp;quot;vec&amp;quot;, &amp;quot;wa&amp;quot;, &amp;quot;wo&amp;quot;,  &amp;quot;wuu&amp;quot;, &amp;quot;xh&amp;quot;, &amp;quot;yi&amp;quot;, &amp;quot;yo&amp;quot;, &amp;quot;za&amp;quot;,&lt;br /&gt;
    &amp;quot;zh&amp;quot;, &amp;quot;zu&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table mapping deprecated language codes to their preferred replacements.&lt;br /&gt;
--- Deprecated language codes should not be used on new pages, but a few content&lt;br /&gt;
--- pages remain under these pseudonamespaces for now.&lt;br /&gt;
p.deprecatedLanguageCodes = {&lt;br /&gt;
	[&amp;quot;pt-br&amp;quot;] = &amp;quot;pt&amp;quot;,&lt;br /&gt;
	[&amp;quot;ro-md&amp;quot;] = &amp;quot;ro&amp;quot;,&lt;br /&gt;
	[&amp;quot;zh-tw&amp;quot;] = &amp;quot;zh-hant&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table mapping language codes to their content namespaces. For historical&lt;br /&gt;
--- reasons, several early languages got dedicated content namespaces, but most&lt;br /&gt;
--- languages rely on pseudonamespaces in the main content namespace. Apart from&lt;br /&gt;
--- pseudonamespaces, the main content namespace is assumed to be in English.&lt;br /&gt;
p.namespacesByLanguage = {&lt;br /&gt;
	[&amp;quot;de&amp;quot;] = &amp;quot;DE&amp;quot;,&lt;br /&gt;
	[&amp;quot;en&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
	[&amp;quot;es&amp;quot;] = &amp;quot;ES&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr&amp;quot;] = &amp;quot;FR&amp;quot;,&lt;br /&gt;
	[&amp;quot;it&amp;quot;] = &amp;quot;IT&amp;quot;,&lt;br /&gt;
	[&amp;quot;ja&amp;quot;] = &amp;quot;JA&amp;quot;,&lt;br /&gt;
	[&amp;quot;nl&amp;quot;] = &amp;quot;NL&amp;quot;,&lt;br /&gt;
	[&amp;quot;ru&amp;quot;] = &amp;quot;RU&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table mapping certain language codes to the names of the categories&lt;br /&gt;
--- tracking missing translations in those languages. This table only includes&lt;br /&gt;
--- languages that have dedicated namespaces.&lt;br /&gt;
p.unavailablePageCategoryNames = {&lt;br /&gt;
	[&amp;quot;de&amp;quot;] = &amp;quot;Pages unavailable in German&amp;quot;,&lt;br /&gt;
	[&amp;quot;en&amp;quot;] = &amp;quot;Pages unavailable in English&amp;quot;,&lt;br /&gt;
	[&amp;quot;es&amp;quot;] = &amp;quot;Pages unavailable in Spanish&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr&amp;quot;] = &amp;quot;Pages unavailable in French&amp;quot;,&lt;br /&gt;
	[&amp;quot;it&amp;quot;] = &amp;quot;Pages unavailable in Italian&amp;quot;,&lt;br /&gt;
	[&amp;quot;ja&amp;quot;] = &amp;quot;Pages unavailable in Japanese&amp;quot;,&lt;br /&gt;
	[&amp;quot;nl&amp;quot;] = &amp;quot;Pages unavailable in Dutch&amp;quot;,&lt;br /&gt;
	[&amp;quot;ru&amp;quot;] = &amp;quot;Pages unavailable in Russian&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if mw.title.getCurrentTitle().fullText == &amp;quot;Module:Languages/config&amp;quot; then&lt;br /&gt;
	--- Logs a table of language codes sorted by autonym. This function is only&lt;br /&gt;
	--- available in the debug console, because NFD normalization uses a lot of&lt;br /&gt;
	--- memory.&lt;br /&gt;
	p.languageCodesSortedByName = function ()&lt;br /&gt;
		local siteLanguage = mw.getContentLanguage()&lt;br /&gt;
		&lt;br /&gt;
		local codes = {}&lt;br /&gt;
		local sortingKeys = {}&lt;br /&gt;
		for i, code in ipairs(p.languageCodes) do&lt;br /&gt;
			table.insert(codes, code)&lt;br /&gt;
			local foldedName = siteLanguage:caseFold(languageNamesByCode[code])&lt;br /&gt;
			-- Fold diacritics by isolating and deleting combining characters.&lt;br /&gt;
			sortingKeys[code] = mw.ustring.gsub(mw.ustring.toNFD(foldedName),&lt;br /&gt;
				&amp;quot;[^%a%p%s]+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(codes, function (a, b)&lt;br /&gt;
			return sortingKeys[a] &amp;lt; sortingKeys[b]&lt;br /&gt;
		end)&lt;br /&gt;
		mw.log((table.concat(codes, &amp;quot; &amp;quot;):gsub(&amp;quot;(%S+)&amp;quot;, &amp;quot;\&amp;quot;%1\&amp;quot;,&amp;quot;)))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Module:Languages&amp;diff=10</id>
		<title>Module:Languages</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Languages&amp;diff=10"/>
		<updated>2025-09-02T15:10:13Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages on Sep 2, 2025.  local p = {} local config = mw.loadData(&amp;quot;Module:Languages/config&amp;quot;) local siteLanguage = mw.getContentLanguage()  --- Returns the language pseudonamespace in the title of a page in the main --- namespace, or nil if the title contains no pseudonamespace. function p.pseudoNamespaceFromTitle(title) 	local pseudoNS = title.text:match(&amp;quot;^(%w%w%w?):&amp;quot;) or 		title.text:match(&amp;quot;^(%w%w%w?%-%w%w%w?%w?...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages on Sep 2, 2025.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local config = mw.loadData(&amp;quot;Module:Languages/config&amp;quot;)&lt;br /&gt;
local siteLanguage = mw.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
--- Returns the language pseudonamespace in the title of a page in the main&lt;br /&gt;
--- namespace, or nil if the title contains no pseudonamespace.&lt;br /&gt;
function p.pseudoNamespaceFromTitle(title)&lt;br /&gt;
	local pseudoNS = title.text:match(&amp;quot;^(%w%w%w?):&amp;quot;) or&lt;br /&gt;
		title.text:match(&amp;quot;^(%w%w%w?%-%w%w%w?%w?):&amp;quot;)&lt;br /&gt;
	-- A few pseudonamespaces indicate topics rather than languages.&lt;br /&gt;
	if pseudoNS and config.languageNamesByCode[pseudoNS:lower()] then&lt;br /&gt;
		return pseudoNS&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Infers and returns the given title’s page language, defaulting to the wiki’s&lt;br /&gt;
--- content language.&lt;br /&gt;
function p.languageFromTitle(title, fallback)&lt;br /&gt;
	-- Language-specific namespace&lt;br /&gt;
	local ns = title.subjectNsText&lt;br /&gt;
	if config.namespacesByLanguage[ns:lower()] then&lt;br /&gt;
		return ns:lower()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Pseudonamespace in the main namespace&lt;br /&gt;
	local pseudoNS = p.pseudoNamespaceFromTitle(title)&lt;br /&gt;
	return pseudoNS and pseudoNS:lower() or fallback or siteLanguage:getCode()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Guesses the source title from the given title, which may be the source or a&lt;br /&gt;
--- translation.&lt;br /&gt;
function p.sourceTitleFromTitle(title)&lt;br /&gt;
	local pseudoNS = p.pseudoNamespaceFromTitle(title)&lt;br /&gt;
	if pseudoNS then&lt;br /&gt;
		local sourcePageName = title.text:sub(#pseudoNS + 2)&lt;br /&gt;
		return mw.title.new(sourcePageName, title.nsText)&lt;br /&gt;
	elseif config.namespacesByLanguage[title.subjectNsText:lower()] then&lt;br /&gt;
		return mw.title.new(title.text, title.isTalkPage and 1 or 0)&lt;br /&gt;
	else&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Quickly uppercases the first character of the string, disregarding Unicode.&lt;br /&gt;
local function ucfirst(s)&lt;br /&gt;
	return s:sub(1, 1):upper() .. s:sub(2, -1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Returns the page name of a translation in the given language.&lt;br /&gt;
--- If simulateLangNS is true and the page lies in a non-content namespace, the&lt;br /&gt;
--- pseudonamespace is capitalized to mimic a dedicated language namespace.&lt;br /&gt;
function p.translationPageName(languageCode, sourceTitle, simulateLangNS)&lt;br /&gt;
	local isInMainNS = sourceTitle.exists and #sourceTitle.subjectNsText == 0&lt;br /&gt;
	&lt;br /&gt;
	local pageNameParts = {&lt;br /&gt;
		sourceTitle.text,&lt;br /&gt;
	}&lt;br /&gt;
	if not sourceTitle.exists then&lt;br /&gt;
		return table.concat(pageNameParts, &amp;quot;:&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isInMainNS and config.namespacesByLanguage[languageCode] then&lt;br /&gt;
		local ns = config.namespacesByLanguage[languageCode]&lt;br /&gt;
		if sourceTitle.isTalkPage then&lt;br /&gt;
			ns = mw.site.namespaces[ns].talk.name&lt;br /&gt;
		end&lt;br /&gt;
		if #ns &amp;gt; 0 then&lt;br /&gt;
			table.insert(pageNameParts, 1, ns)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local pseudoNS = ucfirst(languageCode)&lt;br /&gt;
		local langNS = config.namespacesByLanguage[languageCode]&lt;br /&gt;
		if langNS and (simulateLangNS or #langNS == 0) then&lt;br /&gt;
			pseudoNS = langNS&lt;br /&gt;
		end&lt;br /&gt;
		if #pseudoNS &amp;gt; 0 then&lt;br /&gt;
			table.insert(pageNameParts, 1, pseudoNS)&lt;br /&gt;
		end&lt;br /&gt;
		if #sourceTitle.nsText &amp;gt; 0 then&lt;br /&gt;
			table.insert(pageNameParts, 1, sourceTitle.nsText)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(pageNameParts, &amp;quot;:&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Returns a link to a wiki page.&lt;br /&gt;
local function listItem(languageCode, pageName, label)&lt;br /&gt;
	local link = &amp;quot;&amp;lt;span dir=\&amp;quot;auto\&amp;quot; lang=\&amp;quot;&amp;quot; .. languageCode .. &amp;quot;\&amp;quot;&amp;gt;[[:&amp;quot; .. pageName .. &amp;quot;|&amp;amp;nbsp;&amp;quot; .. label .. &amp;quot;&amp;amp;nbsp;]]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	-- By default, hlist inserts an interpunct as CSS generated content after&lt;br /&gt;
	-- each list item. [[MediaWiki:Common.css]] hides redlinks but not the&lt;br /&gt;
	-- interpuncts, which follow the redlinks visually but aren’t siblings.&lt;br /&gt;
	-- This module uses hlist-with-seps, so hlist-sep gets the interpunct&lt;br /&gt;
	-- instead of the list item. As a sibling of the redlink, hlist-sep gets&lt;br /&gt;
	-- hidden along with the redlink.&lt;br /&gt;
	local sep = mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	sep:addClass(&amp;quot;hlist-sep&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local li = mw.html.create(&amp;quot;li&amp;quot;)&lt;br /&gt;
	li:wikitext(link)&lt;br /&gt;
	return tostring(li)&lt;br /&gt;
end&lt;br /&gt;
p.listItem = listItem&lt;br /&gt;
&lt;br /&gt;
--- Returns an unordered list of links to each possible translation page.&lt;br /&gt;
function p.languageList(currentTitle, sourceTitle)&lt;br /&gt;
	local currentLanguage = p.languageFromTitle(currentTitle)&lt;br /&gt;
	local isInMainNS = #sourceTitle.subjectNsText == 0&lt;br /&gt;
	&lt;br /&gt;
	local listItems = {}&lt;br /&gt;
	for i, code in ipairs(config.languageCodes) do&lt;br /&gt;
		-- Link to the translation.&lt;br /&gt;
		local pageName&lt;br /&gt;
		if code == currentLanguage then&lt;br /&gt;
			-- Translations’ page names may themselves be translated, so force&lt;br /&gt;
			-- the current page to ensure that the link is boldfaced.&lt;br /&gt;
			pageName = currentTitle.fullText&lt;br /&gt;
		else&lt;br /&gt;
			pageName = p.translationPageName(code, sourceTitle)&lt;br /&gt;
			&lt;br /&gt;
			-- Languages with their own namespaces either uppercase or titlecase&lt;br /&gt;
			-- pages in non-content namespaces.&lt;br /&gt;
			if not isInMainNS and config.namespacesByLanguage[code]&lt;br /&gt;
				and not mw.title.new(pageName, sourceTitle.nsText).exists then&lt;br /&gt;
				pageName = p.translationPageName(code, sourceTitle, true)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local item = listItem(code, pageName, config.languageNamesByCode[code])&lt;br /&gt;
		&lt;br /&gt;
		-- Add the current page to a tracking category if a translation is&lt;br /&gt;
		-- unavailable in a language that has a dedicated namespace.&lt;br /&gt;
		if config.namespacesByLanguage[code] and&lt;br /&gt;
			not mw.title.new(pageName, sourceTitle.nsText).exists then&lt;br /&gt;
			local category = &amp;quot;Category:&amp;quot; ..&lt;br /&gt;
				config.unavailablePageCategoryNames[code]&lt;br /&gt;
			local sortingKey = currentLanguage .. currentTitle.text&lt;br /&gt;
			item = item .. &amp;quot;[[&amp;quot; .. category .. &amp;quot;|&amp;quot; .. sortingKey .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(listItems, item)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(listItems, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Returns the current page’s language based on either the page’s title or its&lt;br /&gt;
--- content language (specified by the pagelang argument).&lt;br /&gt;
function p.currentPageLanguage(frame)&lt;br /&gt;
	local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
	return p.languageFromTitle(currentTitle, frame.args.pagelang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Guesses the source title from the given title, which may be the source or a&lt;br /&gt;
--- translation.&lt;br /&gt;
function p.sourceTitle(frame)&lt;br /&gt;
	local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
	&lt;br /&gt;
	local sourcePageName = #(frame.args[1] or &amp;quot;&amp;quot;) &amp;gt; 0 and frame.args[1]&lt;br /&gt;
	return sourcePageName and mw.title.new(sourcePageName) or&lt;br /&gt;
		p.sourceTitleFromTitle(currentTitle)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Returns a flat list of links to translations of the current page, in&lt;br /&gt;
--- wikitext format.&lt;br /&gt;
function p.languages(frame)&lt;br /&gt;
	local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
	local sourceTitle = p.sourceTitle(frame)&lt;br /&gt;
	&lt;br /&gt;
	local languageList = p.languageList(currentTitle, sourceTitle)&lt;br /&gt;
	local hlist = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
	hlist:addClass(&amp;quot;hlist&amp;quot;):addClass(&amp;quot;hlist-with-seps&amp;quot;):wikitext(languageList)&lt;br /&gt;
	&lt;br /&gt;
	local wikitext = tostring(hlist)&lt;br /&gt;
	&lt;br /&gt;
	-- By default, sort the page in categories by the title sans pseudotitle.&lt;br /&gt;
	if frame.args.defaultsort ~= &amp;quot;no&amp;quot; then&lt;br /&gt;
		local pseudoNS = p.pseudoNamespaceFromTitle(currentTitle)&lt;br /&gt;
		if pseudoNS then&lt;br /&gt;
			local sortingKey = currentTitle.text:sub(#pseudoNS + 2)&lt;br /&gt;
			-- If another DEFAULTSORT appeared earlier on the page, this&lt;br /&gt;
			-- DEFAULTSORT has no effect. If a different DEFAULTSORT appears&lt;br /&gt;
			-- later, it needs to specify “noerror” to suppress the error about&lt;br /&gt;
			-- conflicting DEFAULTSORTs.&lt;br /&gt;
			local defaultSort = frame:callParserFunction {&lt;br /&gt;
				name = &amp;quot;DEFAULTSORT&amp;quot;,&lt;br /&gt;
				args = {&lt;br /&gt;
					sortingKey,&lt;br /&gt;
					&amp;quot;noreplace&amp;quot;,&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			wikitext = wikitext .. defaultSort&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return wikitext&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Module:Arguments&amp;diff=9</id>
		<title>Module:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Arguments&amp;diff=9"/>
		<updated>2025-09-02T15:08:18Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;-- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. -- Ported from https://wiki.openstreetmap.org/wiki/Module:Arguments on Sep 2, 2025  local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local checkType = libraryUtil.checkType  local arguments = {}  -- Generate four different tidyVal functions, so that we don&amp;#039;t have to check the -- options every t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
-- Ported from https://wiki.openstreetmap.org/wiki/Module:Arguments on Sep 2, 2025&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Module:Fact&amp;diff=8</id>
		<title>Module:Fact</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Fact&amp;diff=8"/>
		<updated>2025-09-02T15:06:11Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Created page with &amp;quot;local p = {} local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local languages = require(&amp;quot;Module:Languages&amp;quot;) local currentTitle = mw.title.getCurrentTitle() local defaultLangCode = languages.languageFromTitle(currentTitle)  local function makeInvokeFunc(funcName) 	return function (frame) 		local args = getArgs(frame, { 			trim = true, 			removeBlanks = false, 		}) 		return p[funcName](args) 	end end  function pageLink(pageName, label, langCode) 	local title = mw.title....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local languages = require(&amp;quot;Module:Languages&amp;quot;)&lt;br /&gt;
local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
local defaultLangCode = languages.languageFromTitle(currentTitle)&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {&lt;br /&gt;
			trim = true,&lt;br /&gt;
			removeBlanks = false,&lt;br /&gt;
		})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function pageLink(pageName, label, langCode)&lt;br /&gt;
	local title = mw.title.new(pageName)&lt;br /&gt;
	local validPageName&lt;br /&gt;
	if langCode and #langCode &amp;gt; 0 and title then&lt;br /&gt;
		validPageName = languages.translationPageName(langCode, title)&lt;br /&gt;
	elseif defaultLangCode ~= &amp;quot;en&amp;quot; and pageName ~= currentTitle.fullText and title then&lt;br /&gt;
		local translatedPageName = languages.translationPageName(defaultLangCode, title)&lt;br /&gt;
		if mw.title.new(translatedPageName).exists then&lt;br /&gt;
			validPageName = translatedPageName&lt;br /&gt;
		else&lt;br /&gt;
			validPageName = pageName&lt;br /&gt;
		end&lt;br /&gt;
	elseif title then&lt;br /&gt;
		validPageName = pageName&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if validPageName then&lt;br /&gt;
		return &amp;quot;[[&amp;quot; .. validPageName .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return label&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function valueLink(key, value, langCode)&lt;br /&gt;
	local pageName = &amp;quot;Fact:&amp;quot; .. key .. &amp;quot;=&amp;quot; .. value&lt;br /&gt;
	return pageLink(pageName, tostring(mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(value)), langCode)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.value = makeInvokeFunc(&amp;quot;_value&amp;quot;)&lt;br /&gt;
function p._value(args)&lt;br /&gt;
	local langCode = args.kl or args.lang&lt;br /&gt;
	local key = args.key or args[1]&lt;br /&gt;
	&lt;br /&gt;
	local pageName&lt;br /&gt;
	if args.link == &amp;quot;value&amp;quot; or args.link == &amp;quot;fact&amp;quot; or (args[2] and #args[2] &amp;gt; 0) then&lt;br /&gt;
		if key == &amp;quot;type&amp;quot; then&lt;br /&gt;
			pageName = &amp;quot;Relation:&amp;quot; .. (args.value or args[2])&lt;br /&gt;
		else&lt;br /&gt;
			pageName = mw.ustring.format(&amp;quot;Fact:%s=%s&amp;quot;, key, args.value or args[2])&lt;br /&gt;
		end&lt;br /&gt;
	elseif args.link == &amp;quot;key#&amp;quot; or (args[3] and #args[3] &amp;gt; 0) then&lt;br /&gt;
		pageName = mw.ustring.format(&amp;quot;Key:%s#%s-%s&amp;quot;, key, key, args.value or args[3])&lt;br /&gt;
	elseif args.link ~= &amp;quot;none&amp;quot; and key then&lt;br /&gt;
		pageName = &amp;quot;Key:&amp;quot; .. key&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local label = args.value or args[4] or args[3] or args[2] or mw.text.nowiki(&amp;quot;*&amp;quot;)&lt;br /&gt;
	label = mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(label)&lt;br /&gt;
	&lt;br /&gt;
	if pageName then&lt;br /&gt;
		return tostring(pageLink(pageName, tostring(label), langCode))&lt;br /&gt;
	else&lt;br /&gt;
		return tostring(label)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fact(args, includesValue)&lt;br /&gt;
	local components = {}&lt;br /&gt;
	local keyComponents = {}&lt;br /&gt;
	local keyComponentsToLink = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Key&lt;br /&gt;
	local key = args[1]&lt;br /&gt;
	table.insert(keyComponents, key)&lt;br /&gt;
	table.insert(keyComponentsToLink, key)&lt;br /&gt;
	&lt;br /&gt;
	-- Give |subkey= precedence over |subkey1=.&lt;br /&gt;
	if args.subkey then&lt;br /&gt;
		table.insert(keyComponents, args.subkey)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Collect subkeys.&lt;br /&gt;
	local subkeyIndex = 2&lt;br /&gt;
	while args[&amp;quot;subkey&amp;quot; .. subkeyIndex] do&lt;br /&gt;
		local subkey = args[&amp;quot;subkey&amp;quot; .. subkeyIndex]&lt;br /&gt;
		table.insert(keyComponents, subkey)&lt;br /&gt;
		subkeyIndex = subkeyIndex + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Combine |subkey*= with |key=, but not for linking purposes.&lt;br /&gt;
	keyComponents = {&lt;br /&gt;
		table.concat(keyComponents, mw.text.nowiki(&amp;quot;:&amp;quot;)),&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	-- Collect subkeys to be linked separately.&lt;br /&gt;
	local subkeyIndex = 1&lt;br /&gt;
	while args[string.rep(&amp;quot;:&amp;quot;, subkeyIndex)] do&lt;br /&gt;
		local subkey = args[string.rep(&amp;quot;:&amp;quot;, subkeyIndex)]&lt;br /&gt;
		table.insert(keyComponents, subkey)&lt;br /&gt;
		table.insert(keyComponentsToLink, subkey)&lt;br /&gt;
		subkeyIndex = subkeyIndex + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Link the key and any subkeys.&lt;br /&gt;
	local linkedKeyComponents = {}&lt;br /&gt;
	for i, key in ipairs(keyComponentsToLink) do&lt;br /&gt;
		local langCode = args[&amp;quot;kl&amp;quot; .. string.rep(&amp;quot;:&amp;quot;, i - 1)] or args.lang&lt;br /&gt;
		table.insert(linkedKeyComponents, pageLink(&amp;quot;Key:&amp;quot; .. key, keyComponents[i], langCode))&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(components, table.concat(linkedKeyComponents, &amp;quot;:&amp;quot;))&lt;br /&gt;
	&lt;br /&gt;
	components = {&lt;br /&gt;
		tostring(mw.html.create(&amp;quot;bdi&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;white-space&amp;quot;, &amp;quot;nowrap&amp;quot;)&lt;br /&gt;
			:wikitext(table.concat(components)))&lt;br /&gt;
	}&lt;br /&gt;
	if not includesValue then&lt;br /&gt;
		return table.concat(components)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(components, &amp;quot;=&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Values&lt;br /&gt;
	local lastKeyComponent = keyComponents[#keyComponents]&lt;br /&gt;
	if args[2] and #args[2] &amp;gt; 0 then&lt;br /&gt;
		local values = {}&lt;br /&gt;
		if args[2] then&lt;br /&gt;
			table.insert(values, args[2])&lt;br /&gt;
		end&lt;br /&gt;
		if args[&amp;quot;;&amp;quot;] or args.subval then&lt;br /&gt;
			table.insert(values, args[&amp;quot;;&amp;quot;] or args.subval)&lt;br /&gt;
		end&lt;br /&gt;
		local subvalueIndex = 2&lt;br /&gt;
		while args[string.rep(&amp;quot;;&amp;quot;, subvalueIndex)] or args[&amp;quot;subval&amp;quot; .. subvalueIndex] do&lt;br /&gt;
			local otherValue = args[string.rep(&amp;quot;;&amp;quot;, subvalueIndex)] or args[&amp;quot;subval&amp;quot; .. subvalueIndex]&lt;br /&gt;
			if #otherValue &amp;gt; 0 then&lt;br /&gt;
				table.insert(values, otherValue)&lt;br /&gt;
			end&lt;br /&gt;
			subvalueIndex = subvalueIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
		local linkedValues = {}&lt;br /&gt;
		for i, value in ipairs(values) do&lt;br /&gt;
			local langCode = args[i &amp;gt; 1 and (&amp;quot;vl&amp;quot; .. i) or &amp;quot;vl&amp;quot;] or args.lang&lt;br /&gt;
			table.insert(linkedValues, valueLink(lastKeyComponent, value, langCode))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(components, table.concat(linkedValues, &amp;quot;;&amp;quot;))&lt;br /&gt;
	elseif args[3] and #args[3] &amp;gt; 0 then&lt;br /&gt;
		local lastBaseKeyComponent = keyComponentsToLink[#keyComponentsToLink]&lt;br /&gt;
		local lastSubkey = lastKeyComponent:match(&amp;quot;%w+$&amp;quot;)&lt;br /&gt;
		local value = args[3]&lt;br /&gt;
		&lt;br /&gt;
		-- A wiki page title cannot contain a square bracket, so this is likely already a wikilink or external link.&lt;br /&gt;
		local isLiteralLink = (value:sub(1, 1)) == &amp;quot;[&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		local pageName&lt;br /&gt;
		local url&lt;br /&gt;
		if not isLiteralLink then&lt;br /&gt;
			if lastSubkey == &amp;quot;wikipedia&amp;quot; or lastBaseKeyComponent == &amp;quot;wikipedia&amp;quot; then&lt;br /&gt;
				if lastSubkey ~= &amp;quot;wikipedia&amp;quot; then&lt;br /&gt;
					value = lastSubkey .. &amp;quot;:&amp;quot; .. value&lt;br /&gt;
				end&lt;br /&gt;
				pageName = &amp;quot;w:&amp;quot; .. value&lt;br /&gt;
			elseif lastSubkey == &amp;quot;wikidata&amp;quot; or lastBaseKeyComponent == &amp;quot;wikidata&amp;quot; then&lt;br /&gt;
				pageName = &amp;quot;d:&amp;quot; .. value&lt;br /&gt;
			elseif lastSubkey == &amp;quot;wikimedia_commons&amp;quot; or lastBaseKeyComponent == &amp;quot;wikimedia_commons&amp;quot; then&lt;br /&gt;
				pageName = &amp;quot;Commons:&amp;quot; .. value&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if lastSubkey == &amp;quot;url&amp;quot; or lastBaseKeyComponent == &amp;quot;url&amp;quot; or lastSubkey == &amp;quot;website&amp;quot; or lastBaseKeyComponent == &amp;quot;website&amp;quot; then&lt;br /&gt;
				url = value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if url then&lt;br /&gt;
			local label = mw.html.create(&amp;quot;bdi&amp;quot;)&lt;br /&gt;
				:css(&amp;quot;white-space&amp;quot;, &amp;quot;normal&amp;quot;)&lt;br /&gt;
				:wikitext(mw.text.nowiki(url))&lt;br /&gt;
			table.insert(components, &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. tostring(label) .. &amp;quot;]&amp;quot;)&lt;br /&gt;
		elseif pageName then&lt;br /&gt;
			local label = mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(args[3])&lt;br /&gt;
			table.insert(components, pageLink(pageName, tostring(label), &amp;quot;&amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			local label = mw.html.create(&amp;quot;bdi&amp;quot;):wikitext(args[3])&lt;br /&gt;
			table.insert(components, tostring(label))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(components, mw.text.nowiki(&amp;quot;*&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(components)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.key = makeInvokeFunc(&amp;quot;_key&amp;quot;)&lt;br /&gt;
function p._key(args)&lt;br /&gt;
	return fact(args, false)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.fact = makeInvokeFunc(&amp;quot;_fact&amp;quot;)&lt;br /&gt;
function p._fact(args)&lt;br /&gt;
	return fact(args, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.keyComponents(key)&lt;br /&gt;
	if #key == 0 then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local rawComponents = mw.text.split(key, &amp;quot;:&amp;quot;, true)&lt;br /&gt;
	local resolvedComponents = {}&lt;br /&gt;
	local mostSpecificTitle&lt;br /&gt;
	local mostSpecificEntityId&lt;br /&gt;
	local mostSpecificDescription&lt;br /&gt;
	local seenCoreComponent = false&lt;br /&gt;
	for i, component in ipairs(rawComponents) do&lt;br /&gt;
		local base = table.concat(resolvedComponents, &amp;quot;:&amp;quot;)&lt;br /&gt;
		if #base &amp;gt; 0 then&lt;br /&gt;
			base = base .. &amp;quot;:&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local key = mw.ustring.format(&amp;quot;%s%s&amp;quot;, base, component)&lt;br /&gt;
		local title&lt;br /&gt;
		local entityId&lt;br /&gt;
		&lt;br /&gt;
		-- First check if this component is a prefix.&lt;br /&gt;
		-- TODO: Require the prefix to precede any non-prefixes.&lt;br /&gt;
		local pageName = mw.ustring.format(&amp;quot;Key:%s:*&amp;quot;, key)&lt;br /&gt;
		title = mw.title.new(pageName)&lt;br /&gt;
		entityId = mw.wikibase.getEntityIdForTitle(pageName)&lt;br /&gt;
		&lt;br /&gt;
		-- How about a suffix?&lt;br /&gt;
		-- TODO: Require the suffix to follow any non-suffixes.&lt;br /&gt;
		if not entityId and not (title and title.exists) then&lt;br /&gt;
			local pageName = mw.ustring.format(&amp;quot;Key:*:%s&amp;quot;, key)&lt;br /&gt;
			title = mw.title.new(pageName)&lt;br /&gt;
			entityId = mw.wikibase.getEntityIdForTitle(pageName)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not entityId and not (title and title.exists) then&lt;br /&gt;
			local pageName = mw.ustring.format(&amp;quot;Key:%s&amp;quot;, key)&lt;br /&gt;
			title = mw.title.new(pageName)&lt;br /&gt;
			entityId = mw.wikibase.getEntityIdForTitle(pageName)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if entityId or title.exists then&lt;br /&gt;
			local description = mw.wikibase.getDescription(entityId)&lt;br /&gt;
			if (description or not mw.ustring.find(key, &amp;quot;:&amp;quot;)) and&lt;br /&gt;
					-- Avoid deprecated keys, which are less likely to be key components.&lt;br /&gt;
					(not entityId or #mw.wikibase.getBestStatements(entityId, &amp;quot;P17&amp;quot;) == 0) then&lt;br /&gt;
				table.insert(resolvedComponents, component)&lt;br /&gt;
				mostSpecificTitle = title&lt;br /&gt;
				mostSpecificEntityId = entityId&lt;br /&gt;
				mostSpecificDescription = description&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #resolvedComponents == 0 then&lt;br /&gt;
		local component = rawComponents[1]&lt;br /&gt;
		if mw.language.isKnownLanguageFact(component) then&lt;br /&gt;
			table.insert(resolvedComponents, component)&lt;br /&gt;
			mostSpecificDescription = mw.ustring.format(&amp;quot;[[w:ISO 639:%s|%s]]&amp;quot;,&lt;br /&gt;
				component,&lt;br /&gt;
				mw.language.fetchLanguageName(component, defaultLangCode))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local subkey = table.concat(rawComponents, &amp;quot;:&amp;quot;, #resolvedComponents + 1)&lt;br /&gt;
	if #resolvedComponents == 0 then&lt;br /&gt;
		local component = {&lt;br /&gt;
			name = subkey,&lt;br /&gt;
		}&lt;br /&gt;
		return { component }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local superkey = {&lt;br /&gt;
		name = table.concat(resolvedComponents, &amp;quot;:&amp;quot;),&lt;br /&gt;
		title = mostSpecificTitle,&lt;br /&gt;
		entityId = mostSpecificEntityId,&lt;br /&gt;
		description = mostSpecificDescription,&lt;br /&gt;
	}&lt;br /&gt;
	resolvedComponents = p.keyComponents(subkey)&lt;br /&gt;
	table.insert(resolvedComponents, 1, superkey)&lt;br /&gt;
	return resolvedComponents&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.keyComponentList(frame)&lt;br /&gt;
	-- Get arguments from the calling frame, falling back to its calling frame&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	&lt;br /&gt;
	local key = args[1]&lt;br /&gt;
	local components = p.keyComponents(key)&lt;br /&gt;
	if #components &amp;lt; 2 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local listItems = {}&lt;br /&gt;
	for i, component in ipairs(components) do&lt;br /&gt;
		local fact&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			fact = frame:expandTemplate {&lt;br /&gt;
				title = &amp;quot;Fact&amp;quot;,&lt;br /&gt;
				args = { component[&amp;quot;name&amp;quot;] },&lt;br /&gt;
			}&lt;br /&gt;
		elseif component[&amp;quot;title&amp;quot;] or component[&amp;quot;entityId&amp;quot;] then&lt;br /&gt;
			fact = frame:expandTemplate {&lt;br /&gt;
				title = &amp;quot;Fact&amp;quot;,&lt;br /&gt;
				args = {&lt;br /&gt;
					&amp;quot;*&amp;quot;,&lt;br /&gt;
					[&amp;quot;:&amp;quot;] = component[&amp;quot;name&amp;quot;]&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
		else&lt;br /&gt;
			fact = frame:expandTemplate {&lt;br /&gt;
				title = &amp;quot;Value&amp;quot;,&lt;br /&gt;
				args = {&lt;br /&gt;
					mw.ustring.format(&amp;quot;&amp;amp;#x2a;&amp;amp;#x3a;%s=*&amp;quot;, component[&amp;quot;name&amp;quot;]),&lt;br /&gt;
				},&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
		local description = component.description&lt;br /&gt;
		local edit = component.entityId and frame:expandTemplate {&lt;br /&gt;
			title = &amp;quot;Edit&amp;quot;,&lt;br /&gt;
			args = {&lt;br /&gt;
				&amp;quot;Item:&amp;quot; .. component.entityId,&lt;br /&gt;
			},&lt;br /&gt;
		} or &amp;quot;&amp;quot;&lt;br /&gt;
		if description then&lt;br /&gt;
			table.insert(listItems, mw.ustring.format(&amp;quot;* %s: %s %s&amp;quot;, fact, description, edit))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(listItems, mw.ustring.format(&amp;quot;* %s %s&amp;quot;, fact, edit))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.intro and #args.intro &amp;gt; 0 then&lt;br /&gt;
		table.insert(listItems, 1, args.intro)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(listItems, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Template:Fact&amp;diff=6</id>
		<title>Template:Fact</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Template:Fact&amp;diff=6"/>
		<updated>2025-09-02T14:54:58Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Add fact template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code dir=&amp;quot;ltr&amp;quot; class=&amp;quot;mw-content-ltr&amp;quot;&amp;gt;{{#invoke:fact|fact&amp;lt;noinclude&amp;gt;|key|:=subkey|value|;=another_value|;;=yet_another_value|;;;=etcetera&amp;lt;/noinclude&amp;gt;}}&amp;lt;/code&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=5</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=5"/>
		<updated>2025-09-02T14:54:21Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Clarifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations, resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity_car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|octane_87|1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Tags&amp;diff=4</id>
		<title>Tags</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Tags&amp;diff=4"/>
		<updated>2025-09-02T14:49:30Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Featherless moved page Tags to Facts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Facts]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=3</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=3"/>
		<updated>2025-09-02T14:49:30Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Featherless moved page Tags to Facts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki, though interpretations may vary among drivers.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations (tagging them with facts), resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity_car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|octane_87|1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=2</id>
		<title>Facts</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Facts&amp;diff=2"/>
		<updated>2025-09-02T14:48:52Z</updated>

		<summary type="html">&lt;p&gt;Featherless: Add initial facts documentation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article and Scout&#039;s Facts concept take inspiration from [https://wiki.openstreetmap.org/wiki/Tags OpenStreetMap&#039;s Tags documentation].&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;fact&#039;&#039;&#039; consists of two components: a &#039;&#039;key&#039;&#039; and a &#039;&#039;value&#039;&#039;. Facts describe specific attributes of locations that drivers can observe and update, such as gas prices, amenities, and services available at various establishments. Both components are free-format text fields but often represent numeric or structured data. Conventions for the meaning and use of facts are documented on this wiki, though interpretations may vary among drivers.&lt;br /&gt;
&lt;br /&gt;
== Keys and values ==&lt;br /&gt;
&lt;br /&gt;
Facts are applied to locations (tagging them with facts), resulting in a collection of any size. However, each collection may contain a given fact key only once per location. When a fact is absent, default values or inherited assumptions often apply.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;key&#039;&#039; describes a topic, category, or type of attribute. Keys can be qualified with prefixes, infixes, or suffixes (usually separated by underscores), forming super- or sub-categories, or [[namespace|namespaces]]. Common namespaces include fuel prices and amenities.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;value&#039;&#039; represents the current state of the fact. Values are typically numbers (integer or decimal) or boolean (e.g., &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;). Values are required for all facts.&lt;br /&gt;
&lt;br /&gt;
Here are examples used in practice:&lt;br /&gt;
* {{fact|amenity_car_wash|true}} – indicates that a car wash is present at this location.&lt;br /&gt;
* {{fact|octane_87|1.316}} – numeric price for regular gasoline. The fact will also have a volume and currency property in this case.&lt;br /&gt;
&lt;br /&gt;
== Optional properties ==&lt;br /&gt;
&lt;br /&gt;
Beyond the basic key-value structure, facts can include optional properties for additional context.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;volume&#039;&#039; property specifies units for measurable quantities (e.g., &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt; for gas prices). It clarifies the unit of volume measurement for the value.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;currency&#039;&#039; property specifies the monetary unit for price-related facts (e.g., &amp;lt;code&amp;gt;USD&amp;lt;/code&amp;gt; for US dollars, &amp;lt;code&amp;gt;CAD&amp;lt;/code&amp;gt; for Canadian dollars). This ensures price facts are properly contextualized for drivers.&lt;br /&gt;
&lt;br /&gt;
== key=value syntax ==&lt;br /&gt;
In discussions and tools, facts are commonly referenced using &amp;lt;code&amp;gt;key=value&amp;lt;/code&amp;gt; syntax. For facts with volume or currency properties, use the extended syntax: &amp;lt;code&amp;gt;key=value|volume=unit|currency=code&amp;lt;/code&amp;gt;. Keys or values may be quoted to avoid confusion: &amp;lt;code&amp;gt;key=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;=&amp;quot;value&amp;quot;&amp;lt;/code&amp;gt;. The quotes, equals signs, and pipe symbols are not part of the actual fact content.&lt;br /&gt;
&lt;br /&gt;
On this wiki, you can refer to a fact using key=value syntax by including the {{tl|fact}} template.&lt;br /&gt;
&lt;br /&gt;
[[Category:Facts| ]]&lt;br /&gt;
[[Category:Concepts]]&lt;br /&gt;
[[Category:Location Data]]&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
</feed>