Jump to content

Module:PTV route/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mr. Stradivarius (talk | contribs) at 04:04, 9 March 2019 (simplify p._main). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
-- This module implements [[Template:PTVBus]].

local data = mw.loadData('Module:PTVBus/data/sandbox')
local p = {}

local function formatUrlLink(url, display)
	if display then
		return string.format('[%s %s]', url, display)
	else
		return string.format('[%s]', url)
	end
end

local function makePtvUrl(routeData)
	return 'https://www.ptv.vic.gov.au/route/' .. routeData.page
end

local function makeDisplayText(args, routeData)
	local display
	if args.numtext then
		display = args.route
	elseif args.deftext then
		display = routeData.text
	else
		display = args.text
	end
	return display
end

local function getRouteData(mode, route)
	if not route then
		return nil
	end
	mode = mode or "bus"
	local modeData = data[mode]
	if not modeData then
		return nil
	end
	return modeData[route]
end

function p._main(args)
	local routeData = getRouteData(args.mode, args.route)
	if not routeData then
		return nil
	end

	local url = makePtvUrl(routeData)
	local display = makeDisplayText(args, routeData)
	return formatUrlLink(url, display)
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = 'Template:PTVBus',
	})
	return p._main(args)
end

return p