<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ARoutelist_row</id>
	<title>Module:Routelist row - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ARoutelist_row"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Routelist_row&amp;action=history"/>
	<updated>2026-06-20T18:28:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Routelist_row&amp;diff=479354&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Routelist_row&amp;diff=479354&amp;oldid=prev"/>
		<updated>2021-07-16T05:49:47Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = { } -- Package to be exported&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs -- Import module function to work with passed arguments&lt;br /&gt;
local lang = mw.getContentLanguage() -- Retrieve built-in locale for date formatting&lt;br /&gt;
&lt;br /&gt;
local routeStates = { } -- Table with route statuses.&lt;br /&gt;
--[[ The following tables include the following entries:&lt;br /&gt;
row: The start of the row, for this particular type (color)&lt;br /&gt;
established: The string to be output in the &amp;quot;Formed&amp;quot; column. For future routes, &amp;quot;proposed&amp;quot; is displayed here. Otherwise, display the year passed in the established parameter.&lt;br /&gt;
removed: The string to be output in the &amp;quot;Removed&amp;quot; column. In the case of routeStates.former, the year that the route was decommissioned is output instead.&lt;br /&gt;
]]--&lt;br /&gt;
routeStates.current = {row = &amp;quot;|-&amp;quot;, removed = &amp;quot;current&amp;quot;} -- Data for current routes&lt;br /&gt;
routeStates.future = {row = '|- style=&amp;quot;background-color:#ffdead;&amp;quot; title=&amp;quot;Future route&amp;quot;', established = &amp;quot;proposed&amp;quot;, removed = &amp;quot;—&amp;quot;} -- Data for future routes&lt;br /&gt;
routeStates.former = {row = '|- style=&amp;quot;background-color:#d3d3d3;&amp;quot; title=&amp;quot;Former route&amp;quot;'} -- Data for former routes&lt;br /&gt;
routeStates.formeroverride = {row = '|- style=&amp;quot;background-color:#d3d3d3;&amp;quot; title=&amp;quot;Former route&amp;quot;', removed = &amp;quot;—&amp;quot;} -- Data for routes marked as former by override&lt;br /&gt;
routeStates.unknown = {row = &amp;quot;|-&amp;quot;, removed = &amp;quot;—&amp;quot;} -- Data for route with unknown status&lt;br /&gt;
&lt;br /&gt;
function getRouteState(established, decommissioned)&lt;br /&gt;
	--[[ This function is passed the dates given for the established and decommissioned fields to the template. &lt;br /&gt;
	It then returns the entry in the routeStates table corresponding to the status of the route.&lt;br /&gt;
	]]--&lt;br /&gt;
	if decommissioned == 'yes' then --If the decommissioned property just says &amp;quot;yes&amp;quot;, then mark it as a former route and display default data.&lt;br /&gt;
		return routeStates.formeroverride&lt;br /&gt;
	elseif decommissioned then -- If the route is decommissioned, then it must be a former route.&lt;br /&gt;
		return routeStates.former&lt;br /&gt;
	elseif not established then -- Without the establishment date, there is not enough information to determine the status of the route.&lt;br /&gt;
		return routeStates.unknown&lt;br /&gt;
	elseif established == 'proposed' then -- If the &amp;quot;established date&amp;quot; is the string 'proposed', then it must be a future route.&lt;br /&gt;
		return routeStates.future&lt;br /&gt;
	else -- If none of the first three conditions are true, then it must be a current route.&lt;br /&gt;
		return routeStates.current&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getLength(args)&lt;br /&gt;
	-- This function is passed the length fields from the {{routelist row}} invocation, and calculates the missing length from the other.&lt;br /&gt;
	local math = require &amp;quot;Module:Math&amp;quot; -- This module contains functions needed later in this function.&lt;br /&gt;
	local precision = math._precision -- The math._precision function provides the precision of a given string representing a number.&lt;br /&gt;
	local round = math._precision_format -- This method rounds a given number to the given number of digits. In Lua, storing these functions locally results in more efficient execution.&lt;br /&gt;
	local length = {} -- This table will store the computed lengths.&lt;br /&gt;
	local km = args[&amp;quot;length_km&amp;quot;] -- The kilometer length from the {{routelist row}} call.&lt;br /&gt;
	local mi = args[&amp;quot;length_mi&amp;quot;] -- The length in miles as passed to {{routelist row}}.&lt;br /&gt;
	if not km then -- This signifies that a length in kilometers was not passed.&lt;br /&gt;
		local n = tonumber(mi) -- The first step is to convert the miles (passed as a string from the template) into a number.&lt;br /&gt;
		if n then -- If the passed mile value is an empty string, n will equal nil, which would make this statement false. Otherwise, the length in kilometers is computed and stored.&lt;br /&gt;
			local ten_mult = (n % 10 == 0) -- Rounding is handled differently if the input distance is a multiple of 10.&lt;br /&gt;
			local prec = precision(mi) -- Retrieve the precision of the passed mile value (as a string).&lt;br /&gt;
			if ten_mult and prec &amp;lt; 0 then -- If the distance is a multiple of 10 and a whole number...&lt;br /&gt;
				prec = prec + 1 -- Add a digit to the precision.&lt;br /&gt;
			end&lt;br /&gt;
			length.km = round(tostring(n * 1.609344), tostring(prec)) -- Compute and round the length in kilometers, and store it in the length table.&lt;br /&gt;
		else -- No mile value was passed&lt;br /&gt;
			length.km = '—'&lt;br /&gt;
		end&lt;br /&gt;
	else -- If the length in kilometers was passed, the computed lengths table will simply contain the passed length.&lt;br /&gt;
		local prec = precision(km)&lt;br /&gt;
		length.km = round(km, tostring(prec))&lt;br /&gt;
	end&lt;br /&gt;
	if not mi then -- The same as above, but this time converting kilometers to mile if necessary.&lt;br /&gt;
		local n = tonumber(km) -- Kilometers as a number&lt;br /&gt;
		if n then -- If a kilometer value was passed:&lt;br /&gt;
			local ten_mult = (n % 10 == 0) -- Rounding is handled differently if the input distance is a multiple of 10.&lt;br /&gt;
			local prec = precision(km) -- Precision of the passed length&lt;br /&gt;
			if ten_mult and prec &amp;lt; 0 then -- If the distance is a multiple of 10 and a whole number...&lt;br /&gt;
				prec = prec + 1 -- Add a digit to the precision&lt;br /&gt;
			end&lt;br /&gt;
			length.mi = round(tostring(n / 1.609344), tostring(prec)) -- Compute and store the conversion into miles.&lt;br /&gt;
		else -- If not:&lt;br /&gt;
			length.mi = '—' -- Store a dash.&lt;br /&gt;
		end&lt;br /&gt;
	else -- And if the length in miles was passed:&lt;br /&gt;
		local prec = precision(mi) -- Get the precision...&lt;br /&gt;
		length.mi = round(mi, tostring(prec)) -- and format it appropriately&lt;br /&gt;
	end&lt;br /&gt;
	return length -- Return the length table with the computed lengths.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dtsYearCore(date, circa)&lt;br /&gt;
	-- A limited replacement for {{dts}}. This is passed a date and derives a sort key from it. It returns a string with the hidden sort key, along with the year of the original date.&lt;br /&gt;
	if not date then return false end -- If the date is an empty string, stop and go back to whence it came.&lt;br /&gt;
	local year = lang:formatDate('Y', date) -- This invocation of lang:formatDate returns just the year.&lt;br /&gt;
	if year == date then -- If the provided date is just the year:&lt;br /&gt;
		date = date .. &amp;quot;-01-01&amp;quot; -- Tack on January 1 for the sort key to work right.&lt;br /&gt;
	end&lt;br /&gt;
	local month = lang:formatDate('m', date) -- Stores the month of the date.&lt;br /&gt;
	local day = lang:formatDate('d', date) -- Stores the day for this date.&lt;br /&gt;
	local dtsStr = string.format(&amp;quot;%05d-%02d-%02d&amp;quot;, year, month, day) -- Create and store the formatted hidden sort key. The year must be five digits, per convention.&lt;br /&gt;
	local spanParams = {style = &amp;quot;display:none; speak:none&amp;quot;} -- These CSS properties hide the sort key from normal view.&lt;br /&gt;
	local dtsSpan = mw.text.tag({name='span', content=dtsStr, attrs=spanParams}) -- This generates the HTML code necessary for the hidden sort key.&lt;br /&gt;
	if circa == 'yes' then -- If the date is tagged as circa,&lt;br /&gt;
		return dtsSpan .. &amp;quot;&amp;lt;abbr title=\&amp;quot;circa\&amp;quot;&amp;gt;c.&amp;lt;/abbr&amp;gt;&amp;lt;span style=\&amp;quot;white-space:nowrap;\&amp;quot;&amp;gt;&amp;amp;thinsp;&amp;quot; .. year .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; -- Add the circa abbreviation to the display. Derived from {{circa}}&lt;br /&gt;
	else -- Otherwise,&lt;br /&gt;
		return dtsSpan .. year -- Return the hidden sort key concatenated with the year for this date.&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dtsYear(date, circa)&lt;br /&gt;
	local success, result = pcall(dtsYearCore, date, circa)&lt;br /&gt;
	if success then&lt;br /&gt;
		return result&lt;br /&gt;
	else&lt;br /&gt;
		return string.format('%s&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Invalid date &amp;quot;%s&amp;quot;.&amp;lt;/span&amp;gt;', circa and '&amp;lt;abbr title=&amp;quot;circa&amp;quot;&amp;gt;c.&amp;lt;/abbr&amp;gt;&amp;amp;thinsp;' or '', date)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function removed(routeState, decommissioned, circa)&lt;br /&gt;
	-- This function returns the proper value for the removed column.&lt;br /&gt;
	return routeState.removed or dtsYear(decommissioned, circa) -- Returns the removed attribute of the provided routeState table or, if empty, the dtsYear-formatted decommissioned date.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function formed(routeState, established, circa)&lt;br /&gt;
	-- This function returns the proper value for the formed column.&lt;br /&gt;
	return routeState.established or dtsYear(established, circa) or &amp;quot;—&amp;quot; -- Returns 'proposed' if the route is proposed, the dtsYear-formatted established date if one was provided, or an em-dash.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sortkey(args)&lt;br /&gt;
	-- This function return the sort key for the route (not to be confused with the previous function, which generates a sort key for the established and decommissioned dates.)&lt;br /&gt;
	local key = args.sortkey&lt;br /&gt;
	local type = args.type&lt;br /&gt;
	local route = args.route or ''&lt;br /&gt;
	if key then -- If a sort key already exists:&lt;br /&gt;
		return key -- Simply return it.&lt;br /&gt;
	else -- Otherwise:&lt;br /&gt;
		local routeKey&lt;br /&gt;
		local routeNum = tonumber(route)&lt;br /&gt;
		if routeNum then&lt;br /&gt;
			routeKey = string.format('%04d', route) -- This invocation is equivalent to the {{0000expr}} template. It zero-pads the given route number up to 4 digits.&lt;br /&gt;
		else&lt;br /&gt;
			local num, suffix = string.match(route, &amp;quot;(%d*)(.+)&amp;quot;)&lt;br /&gt;
			routeKey = (tonumber(num) and string.format('%04d', num) or '') .. suffix&lt;br /&gt;
		end&lt;br /&gt;
		return type .. routeKey -- Return the sort key for this route, composed of the type and zero-padded route number.&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function termini(args)&lt;br /&gt;
	-- This function determines if this is a beltway or not, and displays the termini columns appropriately.&lt;br /&gt;
	local beltway = args[&amp;quot;beltway&amp;quot;] -- Text in this parameter will span both termini columns.&lt;br /&gt;
	local terminus_a = args[&amp;quot;terminus_a&amp;quot;] or '—' -- Southern or western terminus&lt;br /&gt;
	local terminus_b = args[&amp;quot;terminus_b&amp;quot;] or '—' -- Northern or eastern terminus&lt;br /&gt;
	&lt;br /&gt;
	if beltway then&lt;br /&gt;
		return &amp;quot;|colspan=2 align=center|&amp;quot; .. beltway -- This text will, again, span both columns.&lt;br /&gt;
	else&lt;br /&gt;
		return '|' .. terminus_a .. '||' .. terminus_b -- Fill in the termini columns&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dates(established, decommissioned, routeState, args)&lt;br /&gt;
	-- This function displays the date columns.&lt;br /&gt;
	local established_ref = args.established_ref or '' -- Reference for date established&lt;br /&gt;
	local decommissioned_ref = args.decommissioned_ref or '' -- Reference for date decommissioned&lt;br /&gt;
	return &amp;quot;|align=center|&amp;quot; .. formed(routeState, established, args.circa_established) ..&lt;br /&gt;
	       established_ref .. &amp;quot;||align=center|&amp;quot; .. removed(routeState, decommissioned, args.circa_decommissioned) ..&lt;br /&gt;
	       decommissioned_ref&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function length(args)&lt;br /&gt;
	-- This function generate the length columns, with the appropriate conversions.&lt;br /&gt;
	local miles = args[&amp;quot;length_mi&amp;quot;] -- Length in miles&lt;br /&gt;
	local kilometers = args[&amp;quot;length_km&amp;quot;] -- Length in kilometers&lt;br /&gt;
	local lengths = {length_mi = miles, length_km = kilometers} -- This time, we compile the lengths into a table,&lt;br /&gt;
	local Lengths = getLength(lengths) -- which makes for an easy parameter. This function call will return the lengths in both miles and kilometers,&lt;br /&gt;
	&lt;br /&gt;
	local lengthRef = args[&amp;quot;length_ref&amp;quot;] or ''&lt;br /&gt;
	local first, second&lt;br /&gt;
	if kilometers then&lt;br /&gt;
		first = Lengths.km&lt;br /&gt;
		second = Lengths.mi&lt;br /&gt;
	else&lt;br /&gt;
		first = Lengths.mi&lt;br /&gt;
		second = Lengths.km&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;|align=right|&amp;quot; .. first .. lengthRef .. &amp;quot;||align=right|&amp;quot; .. second -- which are then spliced in here and returned to the template.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function localname(args)&lt;br /&gt;
	-- This function generates a &amp;quot;Local names&amp;quot; cell if necessary&lt;br /&gt;
	local enabled = args[1] or ''&lt;br /&gt;
	local localName = args[&amp;quot;local&amp;quot;] or ''&lt;br /&gt;
	if mw.text.trim(enabled) == &amp;quot;local&amp;quot; then&lt;br /&gt;
		return &amp;quot;|&amp;quot; .. localName&lt;br /&gt;
	else&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function notes(notes)&lt;br /&gt;
	-- This function generates a &amp;quot;Notes&amp;quot; cell if necessary.&lt;br /&gt;
	if notes == 'none' then&lt;br /&gt;
		return '| ' --create empty cell&lt;br /&gt;
	elseif notes then&lt;br /&gt;
		return '|' .. notes --display notes in cell&lt;br /&gt;
	else&lt;br /&gt;
		return '' --create no cell&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function route(args)&lt;br /&gt;
	-- This function displays the shield and link.&lt;br /&gt;
	local format = mw.ustring.format	&lt;br /&gt;
	local parserModule = require &amp;quot;Module:Road data/parser&amp;quot;&lt;br /&gt;
	local parser = parserModule.parser&lt;br /&gt;
	&lt;br /&gt;
	local noshield = args.noshield&lt;br /&gt;
	local bannerFile = parser(args, 'banner')&lt;br /&gt;
	local banner&lt;br /&gt;
	if not noshield and bannerFile and bannerFile ~= '' then&lt;br /&gt;
		local widthCode = parser(args, 'width') or 'square'&lt;br /&gt;
		if widthCode == 'square' then&lt;br /&gt;
			banner = format(&amp;quot;[[File:%s|25px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
		elseif widthCode == 'expand' then&lt;br /&gt;
			local route = args.route&lt;br /&gt;
			if #route &amp;gt;= 3 then&lt;br /&gt;
				banner = format(&amp;quot;[[File:No image.svg|3px|link=|alt=]][[File:%s|25px|link=|alt=]][[File:No image.svg|3px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
			else&lt;br /&gt;
				banner = format(&amp;quot;[[File:%s|25px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
			end&lt;br /&gt;
		elseif widthCode == 'wide' then&lt;br /&gt;
			banner = format(&amp;quot;[[File:No image.svg|3px|link=|alt=]][[File:%s|25px|link=|alt=]][[File:No image.svg|3px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
		elseif widthCode == 'MOSupp' then&lt;br /&gt;
			local route = args.route&lt;br /&gt;
			if #route &amp;gt;= 2 then&lt;br /&gt;
				banner = format(&amp;quot;[[File:No image.svg|3px|link=|alt=]][[File:%s|25px|link=|alt=]][[File:No image.svg|3px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
			else&lt;br /&gt;
				banner = format(&amp;quot;[[File:%s|25px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
			end&lt;br /&gt;
		elseif widthCode == 'US1926' then&lt;br /&gt;
			banner = format(&amp;quot;[[File:%s|25px|link=|alt=]][[File:No image.svg|1px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
		elseif args.state == 'CA' then&lt;br /&gt;
			local route = args.route&lt;br /&gt;
			local type = args.type&lt;br /&gt;
			if type == 'US-Bus' then&lt;br /&gt;
				if #route &amp;gt;= 3 then&lt;br /&gt;
					banner = format(&amp;quot;[[File:No image.svg|2px|link=|alt=]][[File:%s|25px|link=|alt=]][[File:No image.svg|2px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
				else&lt;br /&gt;
					banner = format(&amp;quot;[[File:%s|25px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
				end&lt;br /&gt;
			elseif type == 'CA-Bus' or type == 'SR-Bus' then&lt;br /&gt;
				if #route &amp;gt;= 3 then&lt;br /&gt;
					banner = format(&amp;quot;[[File:No image.svg|1px|link=|alt=]][[File:%s|25px|link=|alt=]][[File:No image.svg|2px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
				else&lt;br /&gt;
					banner = format(&amp;quot;[[File:%s|24px|link=|alt=]]&amp;quot;, bannerFile)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		banner = banner .. '&amp;lt;br&amp;gt;'&lt;br /&gt;
	else&lt;br /&gt;
		banner = ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local shield&lt;br /&gt;
	if not noshield then&lt;br /&gt;
		local shieldFile, second = parser(args, 'shield')&lt;br /&gt;
		if type(shieldFile) == 'table' then&lt;br /&gt;
			shieldFile, second = shieldFile[1], shieldFile[2]&lt;br /&gt;
		end&lt;br /&gt;
		if second and type(second) == 'string' then&lt;br /&gt;
			local shield1 = format(&amp;quot;[[File:%s|x25px|alt=|link=]]&amp;quot;, shieldFile)&lt;br /&gt;
			local shield2 = format(&amp;quot;[[File:%s|x25px|alt=|link=]]&amp;quot;, second)&lt;br /&gt;
			shield = shield1 .. shield2&lt;br /&gt;
		else&lt;br /&gt;
			shield = shieldFile and format(&amp;quot;[[File:%s|x25px|alt=|link=]]&amp;quot;, shieldFile) or ''&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		shield = ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local linkTarget = (not args.nolink) and parser(args, 'link')&lt;br /&gt;
	local abbr = parser(args, 'abbr')&lt;br /&gt;
	local link&lt;br /&gt;
	if linkTarget then&lt;br /&gt;
		link = format(&amp;quot;[[%s|%s]]&amp;quot;, linkTarget, abbr)&lt;br /&gt;
	else&lt;br /&gt;
		link = abbr&lt;br /&gt;
	end&lt;br /&gt;
	if not link then error(&amp;quot;Type not in database: &amp;quot; .. args.type) end&lt;br /&gt;
	local sortkey = sortkey(args)&lt;br /&gt;
	local sortedLink = format(&amp;quot;&amp;lt;span data-sort-value=\&amp;quot;%s&amp;amp;#32;!\&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;quot;, sortkey, link)&lt;br /&gt;
	local route = banner .. shield .. ' ' .. sortedLink&lt;br /&gt;
	return '!scope=&amp;quot;row&amp;quot; class=&amp;quot;nowrap&amp;quot;|' .. route&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
	local args = getArgs(frame) -- Gather passed arguments into easy-to-use table&lt;br /&gt;
	&lt;br /&gt;
	local established = args.established&lt;br /&gt;
	local decommissioned = args.decommissioned&lt;br /&gt;
	local routeState = getRouteState(established, decommissioned)&lt;br /&gt;
	local anchor = args.anchor or sortkey(args)&lt;br /&gt;
	local rowdef = routeState.row .. string.format(' id=&amp;quot;%s&amp;quot;', anchor)&lt;br /&gt;
	local route = route(args)&lt;br /&gt;
	local length = length(args)&lt;br /&gt;
	local termini = termini(args)&lt;br /&gt;
	local localname = localname(args)&lt;br /&gt;
	local dates = dates(established, decommissioned, routeState, args)&lt;br /&gt;
	local notesArg = args.notes&lt;br /&gt;
	local notes = notes(notesArg)&lt;br /&gt;
	&lt;br /&gt;
	local row = {rowdef, route, length, termini, localname, dates, notes}&lt;br /&gt;
	return table.concat(row, '\n')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>