<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://salisford.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ATrack_gauge</id>
	<title>Module:Track gauge - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://salisford.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ATrack_gauge"/>
	<link rel="alternate" type="text/html" href="https://salisford.net/index.php?title=Module:Track_gauge&amp;action=history"/>
	<updated>2026-05-05T03:47:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://salisford.net/index.php?title=Module:Track_gauge&amp;diff=481&amp;oldid=prev</id>
		<title>Cascadia: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://salisford.net/index.php?title=Module:Track_gauge&amp;diff=481&amp;oldid=prev"/>
		<updated>2023-04-05T14:37:24Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:37, 5 April 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Cascadia</name></author>
	</entry>
	<entry>
		<id>https://salisford.net/index.php?title=Module:Track_gauge&amp;diff=480&amp;oldid=prev</id>
		<title>wp&gt;Good Olfactory: category was renamed Wikipedia:Categories_for_discussion/Log/2021_May_30#Category:Articles_using_template_'Track_gauge'_with_unrecognized_input</title>
		<link rel="alternate" type="text/html" href="https://salisford.net/index.php?title=Module:Track_gauge&amp;diff=480&amp;oldid=prev"/>
		<updated>2021-06-08T04:25:25Z</updated>

		<summary type="html">&lt;p&gt;category was renamed &lt;a href=&quot;https://en.wikipedia.org/wiki/Categories_for_discussion/Log/2021_May_30#Category:Articles_using_template_.27Track_gauge.27_with_unrecognized_input&quot; class=&quot;extiw&quot; title=&quot;wikipedia:Categories for discussion/Log/2021 May 30&quot;&gt;Wikipedia:Categories_for_discussion/Log/2021_May_30#Category:Articles_using_template_&amp;#039;Track_gauge&amp;#039;_with_unrecognized_input&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements the {{Track gauge}} template.&lt;br /&gt;
-- Data is in Module:Track gauge/data&lt;br /&gt;
local p = {}&lt;br /&gt;
local gaugeDataAll = nil&lt;br /&gt;
local dataPageName = 'Module:Track gauge/data' -- set /data/sandbox here to test data/sandbox&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- prepareArgs -- Normalise Arguments coming from an #invoke or from a module&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
local function prepareArgs(frame)&lt;br /&gt;
	local origArgs&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		origArgs = frame:getParent().args&lt;br /&gt;
		for k, v in pairs(frame.args) do&lt;br /&gt;
			origArgs = frame.args&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		origArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
	local args = {}&lt;br /&gt;
	-- searchAlias is the cleaned value of args[1]. args[1] is kept as rawInput for error message&lt;br /&gt;
	local searchAlias = ''&lt;br /&gt;
	local rawDisp&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		if tonumber(k) == nil then -- Named argment&lt;br /&gt;
			if k == 'disp' then&lt;br /&gt;
				rawDisp = v -- Keep raw disp input to pass through plain (wiki)text&lt;br /&gt;
				args[k] = mw.ustring.lower(v)&lt;br /&gt;
			elseif k == 'first' then&lt;br /&gt;
				v = mw.ustring.lower(v)&lt;br /&gt;
				if v == 'met' or v == 'metric' then&lt;br /&gt;
					v = 'met'&lt;br /&gt;
				elseif v == 'imp' or v == 'imperial' then&lt;br /&gt;
					v = 'imp'&lt;br /&gt;
				else k = 'trashparam_first' end&lt;br /&gt;
				args[k] = v&lt;br /&gt;
			elseif k == 'nowrap' or k == 'wrap' then -- wrap=y deprecated; reading: nowrap=off&lt;br /&gt;
				v = mw.ustring.lower(v)&lt;br /&gt;
				if v == '' or v == 'off' or v == 'on' or v == 'all' then&lt;br /&gt;
				elseif v == 'inline' or (k == 'wrap' and v == 'y') then&lt;br /&gt;
					v = 'off'&lt;br /&gt;
				else v = '' end&lt;br /&gt;
				args['nowrap'] = v&lt;br /&gt;
			else&lt;br /&gt;
				args[k] = mw.ustring.lower(v)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			args[k] = v -- Keep rawInput in [1] for error message&lt;br /&gt;
			if k == 1 then&lt;br /&gt;
			-- Unnamed argument, the alias to be searched&lt;br /&gt;
			-- Cleanup&lt;br /&gt;
				searchAlias = p.normaliseAliasInput(v)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	args['searchAlias'] = searchAlias&lt;br /&gt;
	if rawDisp then args['rawDisp'] = rawDisp end&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- normaliseAliasInput&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.normaliseAliasInput(aliasIn)&lt;br /&gt;
	local a&lt;br /&gt;
	a = mw.ustring.lower(mw.ustring.gsub(aliasIn, '[%s%,]', ''))&lt;br /&gt;
	a = mw.ustring.gsub(a, '&amp;amp;nbsp;', '')&lt;br /&gt;
	a = mw.ustring.gsub(a, 'gauge$', '')&lt;br /&gt;
	a = mw.ustring.gsub(a, &amp;quot;'&amp;quot;, &amp;quot;ft&amp;quot;)&lt;br /&gt;
	a = mw.ustring.gsub(a, '&amp;quot;', 'in')&lt;br /&gt;
	a = mw.ustring.gsub(a, '⁄', '/')&lt;br /&gt;
	a = mw.ustring.gsub(a, '&amp;amp;frasl;', '/')&lt;br /&gt;
	return a	&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- debugReturnArgs -- Debug function.&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.debugReturnArgs(frame)&lt;br /&gt;
	local args = prepareArgs(frame)&lt;br /&gt;
	local retArgs = {}&lt;br /&gt;
	for k, a in pairs(args) do&lt;br /&gt;
		table.insert(retArgs, k .. '=' .. a)&lt;br /&gt;
	end&lt;br /&gt;
	return 'Args: ' .. table.concat(retArgs, '; ')&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- getTrackGaugeEntry -- Find entry data for a single gauge (alias)&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.getTrackGaugeEntry(searchAlias)&lt;br /&gt;
	gaugeDataAll = mw.loadData(dataPageName)&lt;br /&gt;
	if searchAlias == '' then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local tgEntry = nil&lt;br /&gt;
	for i, tgEntry in ipairs(gaugeDataAll) do&lt;br /&gt;
		for j, alias in ipairs(tgEntry.aliases) do&lt;br /&gt;
			if alias == searchAlias then&lt;br /&gt;
				return tgEntry&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- noWrap -- Add span tags to prevent a string from wrapping.&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
local function noWrap(s)&lt;br /&gt;
	return mw.ustring.format('&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;', s)&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- frac -- A slimmed-down version of the {{frac}} template (a nowrap is to be added with the unit)&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
local function frac(whole, num, den)&lt;br /&gt;
	-- normally would do the TemplateStyles expansion here, but instead we do&lt;br /&gt;
	-- it at the callsite because of [[:phab:T200704]]&lt;br /&gt;
	return mw.ustring.format(&lt;br /&gt;
		'&amp;lt;span class=&amp;quot;frac&amp;quot; role=&amp;quot;math&amp;quot;&amp;gt;%s&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;amp;frasl;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;',&lt;br /&gt;
		whole and (whole .. '&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;+&amp;lt;/span&amp;gt;') or '',&lt;br /&gt;
		num,&lt;br /&gt;
		den&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- catMentions -- Wikicode for &amp;quot;article mentions gauge&amp;quot; categories&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.catMentions(tgEntry, sortlabel, doReturn)&lt;br /&gt;
	local ns = 'Category:'&lt;br /&gt;
	local cat&lt;br /&gt;
&lt;br /&gt;
	if tgEntry == nil then&lt;br /&gt;
		-- Parent, the container cat&lt;br /&gt;
		cat = 'Articles that mention a specific track gauge'&lt;br /&gt;
	else&lt;br /&gt;
		cat = 'Articles that mention track gauge ' .. tgEntry.id .. ' mm'&lt;br /&gt;
	end&lt;br /&gt;
	-- Argument 'label' can be used to add a catsort. Catsort is not used (as of 20 May 2014)&lt;br /&gt;
	if sortlabel ~= nil then&lt;br /&gt;
		sortlabel = '|' .. sortlabel&lt;br /&gt;
	else&lt;br /&gt;
		sortlabel = ''&lt;br /&gt;
	end&lt;br /&gt;
	if doReturn ~= nil then&lt;br /&gt;
		if doReturn == 'fullpagename' then&lt;br /&gt;
			return ns .. cat&lt;br /&gt;
		elseif doReturn == 'pagename' then -- plaintext, no namespace&lt;br /&gt;
			return cat&lt;br /&gt;
		elseif doReturn == 'show' then -- colontrick&lt;br /&gt;
			return '[[:' .. ns .. cat .. sortlabel .. ']]'&lt;br /&gt;
		else -- unknown arg value&lt;br /&gt;
			return ns .. cat&lt;br /&gt;
		end&lt;br /&gt;
	else -- Returns straight categorisation (wikitext)&lt;br /&gt;
		return '[[' .. ns .. cat .. sortlabel .. ']]'&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- formatImp -- Formats imperial units size into a single text element&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.formatImp(tgEntry, measurementToLink, setNowrap, addUnitlink)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local ft = tgEntry.ft&lt;br /&gt;
	if ft then&lt;br /&gt;
		local ftlink = addUnitlink and measurementToLink ~= 'imp' and '[[Foot (unit)|ft]]' or 'ft'&lt;br /&gt;
&lt;br /&gt;
		table.insert(ret, mw.ustring.format('%s&amp;amp;nbsp;%s', ft, ftlink))&lt;br /&gt;
	end&lt;br /&gt;
	local inches = tgEntry['in']&lt;br /&gt;
	local num = tgEntry.num&lt;br /&gt;
	local den = tgEntry.den&lt;br /&gt;
	local has_fraction = num and den&lt;br /&gt;
	if inches and not num and not den then&lt;br /&gt;
&lt;br /&gt;
		table.insert(ret, inches)&lt;br /&gt;
	elseif has_fraction then&lt;br /&gt;
		table.insert(ret, frac(inches, num, den))&lt;br /&gt;
	end&lt;br /&gt;
	if inches or num and den then&lt;br /&gt;
		local incheslink = addUnitlink and measurementToLink ~= 'imp' and '[[inch|in]]' or 'in'&lt;br /&gt;
		table.insert(ret, incheslink)&lt;br /&gt;
	end&lt;br /&gt;
	local gaugeSize&lt;br /&gt;
	if setNowrap then&lt;br /&gt;
		gaugeSize = noWrap(table.concat(ret, '&amp;amp;nbsp;'))&lt;br /&gt;
	else&lt;br /&gt;
		gaugeSize = table.concat(ret, '&amp;amp;nbsp;')&lt;br /&gt;
	end&lt;br /&gt;
	 -- we have do this here to work around [[phab:T200704]]&lt;br /&gt;
	local templatestyles&lt;br /&gt;
	if has_fraction then&lt;br /&gt;
		templatestyles = mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = 'templatestyles', args = { src = 'Fraction/styles.css' }&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		templatestyles = ''&lt;br /&gt;
	end&lt;br /&gt;
			&lt;br /&gt;
	if measurementToLink == 'imp' and tgEntry.pagename ~= nil then&lt;br /&gt;
		return mw.ustring.format(&lt;br /&gt;
			'%s[[%s|%s]]',&lt;br /&gt;
			templatestyles,&lt;br /&gt;
			tgEntry.pagename,&lt;br /&gt;
			gaugeSize&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		return templatestyles .. gaugeSize&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- formatMet -- Formats metric measurements into a single formatted text element. Public for autodocument&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.formatMet(tgEntry, measurementToLink, setNowrap, addUnitlink, removeComma)&lt;br /&gt;
	local m = tgEntry.m&lt;br /&gt;
	local gaugeSize&lt;br /&gt;
	if m then&lt;br /&gt;
		local mUnit = addUnitlink and measurementToLink ~= 'met' and '[[metre|m]]' or 'm'&lt;br /&gt;
		gaugeSize = mw.ustring.format('%s&amp;amp;nbsp;%s', m, mUnit)&lt;br /&gt;
	else&lt;br /&gt;
		local mm = tgEntry.mm&lt;br /&gt;
		mm = tonumber(mm)&lt;br /&gt;
		if mm then&lt;br /&gt;
			mm = mw.getContentLanguage():formatNum(mm)&lt;br /&gt;
			if removeComma then&lt;br /&gt;
				mm = string.gsub( mm, &amp;quot;,&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local mmUnit = addUnitlink and measurementToLink ~= 'met' and '[[millimetre|mm]]' or 'mm'&lt;br /&gt;
		gaugeSize = mw.ustring.format('%s&amp;amp;nbsp;%s', mm, mmUnit)&lt;br /&gt;
	end&lt;br /&gt;
	if setNowrap then&lt;br /&gt;
		gaugeSize = noWrap(gaugeSize)&lt;br /&gt;
	end&lt;br /&gt;
	if measurementToLink == 'met' and tgEntry.pagename ~= nil then&lt;br /&gt;
		return mw.ustring.format('[[%s|%s]]', tgEntry.pagename, gaugeSize)&lt;br /&gt;
	else&lt;br /&gt;
		return gaugeSize&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- formatAltName&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function formatAltName(tgEntry, addGaugeName, addGaugeNameLink, disp, setNowrap, engvar)&lt;br /&gt;
	-- Assumed: at least one to add is true.&lt;br /&gt;
	if tgEntry.name == nil then&lt;br /&gt;
		-- Not checked: link does exist alone&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	local retAlt = {}&lt;br /&gt;
	if disp == 'br' then&lt;br /&gt;
		table.insert(retAlt, '&amp;lt;br /&amp;gt;')&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(retAlt, ' ')&lt;br /&gt;
	end&lt;br /&gt;
	if setNowrap then&lt;br /&gt;
		table.insert(retAlt, '&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;')&lt;br /&gt;
	end&lt;br /&gt;
	if addGaugeNameLink then&lt;br /&gt;
		if engvar == 'en-us' then&lt;br /&gt;
			-- Current implementations (2016): metER for metRE (1000-met, 1009-met)&lt;br /&gt;
			table.insert(retAlt, tgEntry.en_US_link or tgEntry.link or tgEntry.name)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(retAlt, tgEntry.link or tgEntry.name)&lt;br /&gt;
		end&lt;br /&gt;
	else -- so must be unlinked .name to add&lt;br /&gt;
			if engvar == 'en-us' then&lt;br /&gt;
			-- Current implementations (2016): metER for metRE (1000-met, 1009-met)&lt;br /&gt;
			table.insert(retAlt, tgEntry.en_US_name or tgEntry.name)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(retAlt, tgEntry.name)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if setNowrap then --close tag&lt;br /&gt;
		table.insert(retAlt, '&amp;lt;/span&amp;gt;')&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(retAlt, '')&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- main -- The basic module&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- In general: the tgEntry object (from TG/data) is passed to the functions, while arguments are processed here.&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	local args = prepareArgs(frame)&lt;br /&gt;
	local tgEntry = p.getTrackGaugeEntry(args.searchAlias)&lt;br /&gt;
&lt;br /&gt;
	-- Categorise &amp;amp; preview warning when no track gauge definition was found.&lt;br /&gt;
	if tgEntry == nil then&lt;br /&gt;
		local input = args[1] or ''&lt;br /&gt;
		local errorTail = require('Module:If preview')._warning({&lt;br /&gt;
			'Track gauge ' ..&lt;br /&gt;
			input ..&lt;br /&gt;
			' not in [[:Template:Track_gauge#List_of_defined_track_gauges|List of defined track gauges]] ([[Template talk:Track gauge|talk]]).'&lt;br /&gt;
		})&lt;br /&gt;
&lt;br /&gt;
		if title:inNamespaces(0, 14) then -- mainspace and category space&lt;br /&gt;
			errorTail = errorTail .. &amp;quot;[[Category:Articles using Template:Track gauge with unrecognized input]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		return input .. errorTail&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Check and set args &amp;amp; tgEntry props: disp, first, nowrap, first&lt;br /&gt;
	local disp = args.disp or ''&lt;br /&gt;
	local first = args.first or tgEntry.def1&lt;br /&gt;
	local unitlink = args.unitlink or ''&lt;br /&gt;
	local comma = args.comma or ''&lt;br /&gt;
	local nowrap = args.nowrap or ''&lt;br /&gt;
	local setNowrapElement = (nowrap == '' or nowrap == 'off') -- To prevent nested nowrap tags&lt;br /&gt;
	local measurementToLink&lt;br /&gt;
	if args.lk == 'on' then&lt;br /&gt;
		if disp == '1' then&lt;br /&gt;
			measurementToLink = first -- Can make metric text links to the imp linked page&lt;br /&gt;
		else&lt;br /&gt;
			measurementToLink = tgEntry.def1 -- When first=swapped, this could link 2nd measure.&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- String the text elements together (compose the return table)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	-- nowrap opening tag&lt;br /&gt;
	if nowrap == 'all' or nowrap == 'on' then&lt;br /&gt;
		table.insert(ret, '&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;')&lt;br /&gt;
	end&lt;br /&gt;
	-- First measure&lt;br /&gt;
	if first == 'met' then&lt;br /&gt;
		table.insert(ret,&lt;br /&gt;
			p.formatMet(tgEntry, measurementToLink, setNowrapElement, unitlink == 'on', comma == 'off'))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(ret,&lt;br /&gt;
			p.formatImp(tgEntry, measurementToLink, setNowrapElement, unitlink == 'on', comma == 'off'))&lt;br /&gt;
	end&lt;br /&gt;
	-- The joint and the second measure&lt;br /&gt;
	if disp == '1' then&lt;br /&gt;
	else&lt;br /&gt;
		local joinText = ''&lt;br /&gt;
		local closeDisp = ''&lt;br /&gt;
		if disp == 's' or disp == '/' then&lt;br /&gt;
			joinText = '&amp;amp;nbsp;/ ' --spaces&lt;br /&gt;
		elseif disp == 'br' then&lt;br /&gt;
			joinText = '&amp;lt;br /&amp;gt;('&lt;br /&gt;
			closeDisp = ')'&lt;br /&gt;
		elseif disp == '[' or disp == '[]' then&lt;br /&gt;
			joinText = ' ['&lt;br /&gt;
			closeDisp = ']'&lt;br /&gt;
		elseif disp ~= '' then -- Is anytext&lt;br /&gt;
			joinText = ' ' .. args['rawDisp'] .. ' '&lt;br /&gt;
		else&lt;br /&gt;
			joinText = ' ('&lt;br /&gt;
			closeDisp = ')'&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(ret, joinText)&lt;br /&gt;
		if first ~= 'met' then&lt;br /&gt;
			table.insert(ret,&lt;br /&gt;
				p.formatMet(tgEntry, measurementToLink, setNowrapElement, unitlink == 'on', comma == 'off'))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(ret,&lt;br /&gt;
				p.formatImp(tgEntry, measurementToLink, setNowrapElement, unitlink == 'on'))&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(ret, closeDisp) -- Could be ''&lt;br /&gt;
	end&lt;br /&gt;
	if nowrap == 'on' then -- Closing tag&lt;br /&gt;
		table.insert(ret, '&amp;lt;/span&amp;gt;')&lt;br /&gt;
	end&lt;br /&gt;
	-- Alternative name&lt;br /&gt;
	if args.al == 'on' or args.allk == 'on' then&lt;br /&gt;
		local setNowrapAltname = (nowrap == '' or nowrap == 'on') -- Logic applied to prevent nested nowrap tags&lt;br /&gt;
		table.insert(ret, formatAltName(tgEntry, args.al == 'on', args.allk == 'on', disp, setNowrapAltname, args.engvar))&lt;br /&gt;
	end&lt;br /&gt;
	-- Closing nowrap tag&lt;br /&gt;
	if nowrap == 'all' then&lt;br /&gt;
		table.insert(ret, '&amp;lt;/span&amp;gt;')&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Category mentionings (maintenance)&lt;br /&gt;
	if args.addcat or '' == 'no' then&lt;br /&gt;
		-- No categorization&lt;br /&gt;
	elseif title:inNamespaces(0) then&lt;br /&gt;
		-- switched off per [[Wikipedia:Categories_for_discussion/Log/2016_December_6#Category:Articles_that_mention_a_specific_track_gauge]]&lt;br /&gt;
		-- 2016-12-19&lt;br /&gt;
		-- table.insert(ret, p.catMentions(tgEntry))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Now sting the table together&lt;br /&gt;
	return table.concat(ret, '')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
--20161219: maintenance categorisation switched off per CfD&lt;br /&gt;
--20170602: fix bug, show name when al=on&lt;br /&gt;
--20180708: show preview warning when gauge is not in list&lt;br /&gt;
--20190124: with disp=/ (slash) value separator: surround by spaces&lt;br /&gt;
--20210304: add option comma=off (mm only)&lt;/div&gt;</summary>
		<author><name>wp&gt;Good Olfactory</name></author>
	</entry>
</feed>