<?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%3APTV_route</id>
	<title>Module:PTV route - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3APTV_route"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:PTV_route&amp;action=history"/>
	<updated>2026-06-21T20:29:49Z</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:PTV_route&amp;diff=478880&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:PTV_route&amp;diff=478880&amp;oldid=prev"/>
		<updated>2021-07-16T05:15:28Z</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;require('Module:No globals')&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData('Module:PTV route/data')&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local INVALID_ROUTE_CATEGORY = 'PTV route templates with invalid routes'&lt;br /&gt;
local DEPRECATED_PARAMETER_CATEGORY = 'PTV route templates with deprecated parameters'&lt;br /&gt;
&lt;br /&gt;
local function makeExternalLink(url, display)&lt;br /&gt;
	-- Make an external link, given a URL and an optional display string.&lt;br /&gt;
	if display then&lt;br /&gt;
		return string.format('[%s %s]', url, display)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format('[%s]', url)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makePtvUrl(routeData)&lt;br /&gt;
	-- Generate the URL for a PTV route page.&lt;br /&gt;
	return 'https://www.ptv.vic.gov.au/route/' .. routeData.page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeDisplayText(args, routeData)&lt;br /&gt;
	-- Make the display text for a link to a PTV route page.&lt;br /&gt;
	if args.display == 'num' or args.display == 'number' or args.numtext then&lt;br /&gt;
		return args.route&lt;br /&gt;
	elseif args.display == 'desc' or args.display == 'description' or args.deftext then&lt;br /&gt;
		return routeData.text&lt;br /&gt;
	else&lt;br /&gt;
		return args.text&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getRouteData(mode, route)&lt;br /&gt;
	-- Get the route data for a route from the data module.&lt;br /&gt;
	if not route then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	mode = mode or 'bus'&lt;br /&gt;
	local modeData = data[mode]&lt;br /&gt;
	if not modeData then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return modeData[route]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makePtvLink(args, routeData)&lt;br /&gt;
	-- Make a link to a PTV route page.&lt;br /&gt;
	local url = makePtvUrl(routeData)&lt;br /&gt;
	local display = makeDisplayText(args, routeData)&lt;br /&gt;
	return makeExternalLink(url, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makePtvCitation(args, routeData)&lt;br /&gt;
	-- Make a citation for a PTV route page.&lt;br /&gt;
	local title&lt;br /&gt;
	if args.route == routeData.text then&lt;br /&gt;
		title = routeData.text&lt;br /&gt;
	else&lt;br /&gt;
		title = string.format('%s %s', args.route, routeData.text)&lt;br /&gt;
	end&lt;br /&gt;
	local citeArgs = {&lt;br /&gt;
		title = title,&lt;br /&gt;
		url = makePtvUrl(routeData),&lt;br /&gt;
		publisher = 'Public Transport Victoria',&lt;br /&gt;
		df = 'dmy-all',&lt;br /&gt;
	}&lt;br /&gt;
	for _, field in ipairs{&lt;br /&gt;
		'access-date',&lt;br /&gt;
		'accessdate',&lt;br /&gt;
		'archive-date',&lt;br /&gt;
		'archivedate',&lt;br /&gt;
		'archive-url',&lt;br /&gt;
		'archiveurl',&lt;br /&gt;
		'dead-url',&lt;br /&gt;
		'deadurl',&lt;br /&gt;
	} do&lt;br /&gt;
		citeArgs[field] = args[field]&lt;br /&gt;
	end&lt;br /&gt;
	return mw.getCurrentFrame():expandTemplate{&lt;br /&gt;
		title = 'Cite web',&lt;br /&gt;
		args = citeArgs,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalizeArguments(args)&lt;br /&gt;
	-- Normalize the arguments that we received.&lt;br /&gt;
	-- First, make a copy of the table so we don't alter our caller's data.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for key, value in pairs(args) do&lt;br /&gt;
		ret[key] = value&lt;br /&gt;
	end&lt;br /&gt;
	-- Set aliases&lt;br /&gt;
	ret.route = ret.route or ret[1]&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasDeprecatedParameters(args)&lt;br /&gt;
	-- Whether the argument table contains deprecated parameters.&lt;br /&gt;
	return args.numtext or args.deftext&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(category)&lt;br /&gt;
	-- Make a category wikilink.&lt;br /&gt;
	return string.format('[[Category:%s]]', category)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderTrackingCategory(category)&lt;br /&gt;
	-- Render a tracking category, if the current page is in mainspace.&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		return makeCategoryLink(category)&lt;br /&gt;
	else&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderPtvTemplate(args, renderFunc)&lt;br /&gt;
	-- Render the output of a PTV template, given a table of arguments and a&lt;br /&gt;
	-- function to render the template from the arguments and route data.&lt;br /&gt;
	args = normalizeArguments(args)&lt;br /&gt;
	local routeData = getRouteData(args.mode, args.route)&lt;br /&gt;
	if not routeData then&lt;br /&gt;
		return renderTrackingCategory(INVALID_ROUTE_CATEGORY)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = ''&lt;br /&gt;
	ret = ret .. renderFunc(args, routeData)&lt;br /&gt;
	if hasDeprecatedParameters(args) then&lt;br /&gt;
		ret = ret .. renderTrackingCategory(DEPRECATED_PARAMETER_CATEGORY)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Generate a link to a Public Transport Victoria route.&lt;br /&gt;
	return renderPtvTemplate(args, makePtvLink)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._cite(args)&lt;br /&gt;
	-- Generate a citation for a Public Transport Victoria route.&lt;br /&gt;
	return renderPtvTemplate(args, makePtvCitation)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInvokableFunction(func, wrappers)&lt;br /&gt;
	-- Make a function that can be accessed with #invoke.&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = require('Module:Arguments').getArgs(frame, {&lt;br /&gt;
			wrappers = wrappers,&lt;br /&gt;
		})&lt;br /&gt;
		return func(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.main = makeInvokableFunction(p._main, 'Template:PTV route')&lt;br /&gt;
p.cite = makeInvokableFunction(p._cite, 'Template:Cite PTV route')&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>