Jump to content

Module:Infobox road/sections

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Fredddie (talk | contribs) at 06:57, 13 December 2021. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}

local getArgs = require('Module:Arguments').getArgs
local lengthModule = require("Module:Infobox road/length")
local frame = mw.getCurrentFrame()

function p._section(args)
	local infobox_args = {
		['child'] = "yes",
		['headerclass'] = require("Module:Infobox road/sandbox")._headerStyle
	}
	local i = 1
	local num = i
	while (1) do
		local headern = "header" .. i
		local lengthLabeln = "label" .. (i + 1)
		local lengthDatan = "data" .. (i + 1)
		local directionAn = "label" .. (i + 2)
		local terminusAn = "data" .. (i + 2)
		local jctClassn = "class" .. (i + 3)
		local jctLabeln = "label" .. (i + 3)
		local jctDatan = "data" .. (i + 3)
		local directionBn = "label" .. (i + 4)
		local terminusBn = "data" .. (i + 4)
	
		if i == 1 then	
			infobox_args['title'] = args['section' .. i] or "Section " .. i
		else
			infobox_args[headern] = args['section' .. i] or "Section " .. i
		end
		
		infobox_args[lengthLabeln] = "Length"
		infobox_args[lengthDatan] = lengthModule._length(num, args)

		local dir_a = args["direction_a" .. i] or args.direction_a or ''
		if dir_a ~= '' then
			infobox_args[directionAn] = dir_a .. " end"
		else
			infobox_args[directionAn] = "From"
		end

		infobox_args[terminusAn] = args["terminus_a" .. i]
		infobox_args[jctClassn] = "plainlist"
		infobox_args[jctLabeln] = "Major intersections"
		infobox_args[jctDatan] = args["junction" .. i]

		local dir_b = args["direction_b" .. i] or args.direction_b or ''
		if dir_b ~= '' then
			infobox_args[directionBn] = dir_b .. " end"
		else
			infobox_args[directionBn] = "From"
		end

		infobox_args[terminusBn] = args["terminus_b" .. i]
		
		if i == 15 then
			break
		else
			i = i + 1
		end
		
	end

	return frame:expandTemplate ({title='Infobox', args = infobox_args})
	
end

function p.section(frame)
	args = getArgs(frame)
	return p._section(args)
end

local function loop(args)
	local ring_road = args.ring_road or ''
	if ring_road ~= '' then
		return "[[Ring road]] around " .. ring_road
	end
	local beltway_city = args.beltway_city or ''
	if beltway_city ~= '' then
		return "[[Beltway]] around " .. beltway_city
	end
	local orbital = args.orbital or ''
	if orbital ~= '' then
		return "[[Orbital road|Orbital]] around " .. orbital
	end
	local loop = args.loop or ''
	if loop ~= '' then
		return "[[Loop road|Loop]] around " .. loop
	end
	local tloop = args.tloop or ''
	if tloop == 'none' then
		return "Tourist loop"
	elseif tloop ~= '' then
		return "Tourist loop around " .. tloop
	end
	return nil
end

function p._main(args)
	local infobox_args = {
		['child'] = "yes"
	}
	
	infobox_args['title'] = args.section0 or "Major junctions"
	infobox_args['data1'] = loop(args)

	local dir_a = args.direction_a or ''
	if dir_a ~= '' then
		infobox_args['label2'] = dir_a .. " end"
	else
		infobox_args['label2'] = "From"
	end

	infobox_args['data2'] = args.terminus_a
	infobox_args['class3'] = "plainlist"
	infobox_args['label3'] = "<span style='display:none;'>Major intersections</span>"
	infobox_args['data3'] = args.junction or args.junctions

	local dir_b = args.direction_b or ''
	if dir_b ~= '' then
		infobox_args['label4'] = dir_b .. "&nbsp;end"
	else
		infobox_args['label4'] = "From"
	end

	infobox_args['data4'] = args.terminus_b

	return frame:expandTemplate ({title='Infobox', args = infobox_args})
end

function p.main(frame)
	args = getArgs(frame)
	return p._main(args)
end

return p