local p = {} local getArgs = require('মডিউল:Arguments').getArgs local util = require("মডিউল:Road data/util") local yesno = require('মডিউল:Yesno') local langModule = require('মডিউল:Lang') local routeModule = require("মডিউল:Infobox road/route") local parserModule = require("মডিউল:Road data/parser") local parser = parserModule.parser local format = mw.ustring.format local frame = mw.getCurrentFrame()  local function country(args) 	local state = args.state or args.province 	local country 	local countryModule = mw.loadData("মডিউল:Road data/countrymask") 	local country = args.country or countryModule[state] 	 	return country end  -- HEADER COLORS  function p.headerStyle(frame) 	local args = getArgs(frame) 	local header  		if args.header_type == nil then 			header = args.header_type 		else 			header = string.lower(args.header_type) 		end 		 	local deleted = args.decommissioned or args.deleted or header == "former" 	local uc = header == "under construction" or header == "const" or header == "uc" 	local minor = header == "minor" 	local hist = header == "hist" or header == "historic" or header == "historical" or header == "scenic" 	local color = parser(args, 'color') or args['header_color'] 	local freeway = header == "freeway" 	 	if freeway then 		return "header-MUTCDblue" 	elseif uc then 		return "header-uc" 	elseif minor then 		return "header-minor" 	elseif deleted then 		return "header-deleted" 	elseif hist then 		return "header-hist" 	elseif color then 		return "header-" .. color 	elseif args.state or args.province or args.country then 		local country = country(args) 		return "header-" .. country or "header-default" 	else 		return "header-default" 	end end  -- SECOND IMAGE  local function photo(args) 	local country = country(args) 	local photo = args.photo or args.image 	local width = args.photo_wide or args.image_width or "290px" 	local alt = args.photo_alt or args.image_alt or photo 	 	if photo == nil then 		return nil 	elseif country == "USA" then 		return nil 		else return string.format('%s|alt=%s', photo, width, alt) 	end end  function p.photo(frame) 	local args = getArgs(frame) 	return photo(args) end  -- TRANSLATION  local function translate(args, lang) 	local lang = parser(args, 'lang') or args.lang or 'none' 	local translation = args.translation or parser(args, 'translation') or 	 	if translation ~=  and lang == 'none' then 		return translation 	elseif country(args) == "CHN" and args.type == "Expwy" then 		local trans = require( "Module:Road data/masks/CHN/Expwy translations" ) 		local route = args.route 		 		return langModule._lang({lang, trans[route]}) 	elseif country(args) == "HUN" then 		local nominal = require( "Module:Road data/masks/HUN" ) 		local routeNum 		local leading 		 			if string.len(args.route) > 2 then 				routeNum = string.match(args.route, "%d%d$", 0) 				leading = string.match(args.route, "(%d*)%d%d$", 0) 			else 				routeNum = args.route 				leading = 			end 		 		if args.type == "M" then 			return langModule._lang({"hu", "M" .. leading .. nominal[routeNum] .. " autópálya"}) 		elseif args.type == "Mb" then 			return langModule._lang({"hu", "M" .. leading .. nominal[routeNum] .. " autóút"}) 		elseif args.type == "MR" then 			return langModule._lang({"hu", leading .. nominal[routeNum] .. " főút"}) 		elseif args.type == "Mb" then 			return langModule._lang({"hu", leading .. nominal[routeNum] .. " közút"}) 		end 	elseif lang == "ar" and translation ~=  then 		local route = args.route 		local arabicModule = require( "Module:Convert to eastern arabic numerals" ) 		local arabic = arabicModule._convert({route}) 		local translated = string.gsub( translation, route, arabic) 		 		return langModule._lang({lang, translated}) 	elseif translation ~=  and lang ~= 'none' then 		return langModule._lang({lang, translation}) 	else 		return nil 	end end  function p.translate(frame) 	local pframe = frame:getParent()     local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself     local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template          local lang = config.lang 	return translate(args, lang) end  -- MAINTAINED BY  local function maint(args) 	local maint = args.maint or parser(args, 'maint') or  	if maint == "none" or maint ==  then 		return nil 	else 		return  maint .. " কর্তৃক রক্ষণাবেক্ষণকৃত" 	end end  function p.maint(frame) 	local args = getArgs(frame) 	return maint(args) end  -- DEFINED BY LAW  local function law(args) 	local law = parser(args, 'law') or  	if args.section ==  then 		return nil 	else 		return "Defined by " .. law 	end end  function p.law(frame) 	local args = getArgs(frame) 	return law(args) end  -- EXISTED  function p._existed(args) 	local formed = args.established or args.formed or  	local deleted = args.decommissioned or args.deleted or 	 	if formed ==  then 		return nil 	elseif deleted ==  then 		return formed .. "–বর্তমান" 	else 		return formed .. "–" .. deleted 	end end  function p.existed(frame) 	local args = getArgs(frame) 	return p._existed(args) end  -- TIME PERIOD  local function period(args) 	 	local infobox_args = {} 	 	infobox_args['bodystyle'] = 'display:inline-table;' 	infobox_args['child'] = 'yes' 	infobox_args['decat'] = 'yes' 	infobox_args['label1'] = "সময়কাল" 	infobox_args['data1'] = args.time_period 	 	if args.time_period then 		infobox_args['label2'] = "সাংস্কৃতিক তাৎপর্য" 		infobox_args['data2'] = args.significance 		infobox_args['label3'] = "পরিচিতির কারন" 		infobox_args['data3'] = args.known_for 		infobox_args['label4'] = "সম্পর্কিত পথসমূহ" 		infobox_args['data4'] = args.related 	else 		infobox_args['label3'] = "পরিচিতির কারন" 		infobox_args['data3'] = args.known_for 	end  	return frame:expandTemplate ({title='Infobox', args = infobox_args}) end  local function period_params(args)  	if args.time_period or args.known_for then 		return true 	else 		return false 	end end  function p.period(frame) 	local args = getArgs(frame) 	 	if period_params(args) == false then 			return nil 		else 			return period(args) 		end 	end  -- ALLOCATION  local function allocation(args) 	local country = country(args) 	 	if country == "AUS" then 		return "Allocation" 		else return "অংশবিশেষমহাসড়ক" 	end end  function p.allocation(frame) 	local args = getArgs(frame) 	return allocation(args) end  -- SPUR OF  local function spurOf(args) 	local state = args.state or args.province 	local country = args.country 	local county = args.county 	local parentType = args.spur_type 	local parentRoute = args.spur_of 	local aux = parser(args, 'aux') or "Auxiliary route" or nil 	local jct = frame:expandTemplate{ 			title = 'jct', args = { 				state = state, 				country = country, 				county1 = county, 				parentType, 				parentRoute, 				noshield1 = "yes" 			} 		}  	if not parentType and not parentRoute then 		return nil 	elseif type(aux) == "table" then 		return  jct .. "-এর সহায়ক পথ" 		else return jct .. "-এর " .. tostring(aux)  	end end  function p.spurOf(frame) 	local args = getArgs(frame) 	return spurOf(args) end  -- PART OF  local function partOf(args) 	 	if args["e-road"] or args.ahn or args.tahn or args.mrn then  		local infobox_args = {} 		 		infobox_args['bodystyle'] = 'display:inline-table;' 		infobox_args['child'] = 'yes' 		infobox_args['decat'] = 'yes'  		if args["e-road"] then 			local eshield = args["e-road-shield"] or  			infobox_args['data1'] = eshield .. args["e-road"] .. "-এর অংশ" 		end 		if args.ahn then 			local ashield = args["ahn-shield"] or 			infobox_args['data2'] = ashield .. args.ahn .. "-এর অংশ" 		end 		if args.tahn then 			local tshield = args["tahn-shield"] or  			infobox_args['data3'] = tshield .. args.tahn .. "-এর অংশ" 		end 		if args.mrn then 			local mshield = args["mrn-shield"] or '' 			infobox_args['data4'] = mshield .. args.mrn .. "-এর অংশ" 		end 		 		return frame:expandTemplate ({title='Infobox', args = infobox_args}) 		 	else return nil 	end	 end  function p.partOf(frame) 	local args = getArgs(frame) 	return partOf(args) end  --BROWSE LINKS  local function browse(args) 	if args.nobrowse then return nil end 	 	local previousRoute = args.previous_route 	local nextRoute = args.next_route 	if previousRoute or nextRoute then 		local box = mw.html.create('table'):cssText("width:100%; background:none; border-collapse:collapse; display:inline-table;") 		local boxModule = require "Module:Road data/browse" 		local primary = boxModule._browse(args) 		box:wikitext(primary) 		return tostring(box) 	end end  function p.browse(frame) 	local args = getArgs(frame) 	return browse(args) end  local function extended(args) 	local extended = args.browse 	if args.nobrowse or extended == nil then 		return nil  	else 		local box = mw.html.create('table'):cssText("width:100%; background:none; border-collapse:collapse; display:inline-table;") 		box:wikitext(extended) 		return tostring(box) 	end end  function p.extended(frame) 	local args = getArgs(frame) 	return extended(args) end  -- HIGHWAY SYSTEM LINKS  local function system(args) 	if args.system1 then 		 	local infobox_args = { 		['child'] = "yes", 		['decat'] = "yes", 		['bodystyle'] = "border-collapse:collapse;" 	} 		 		 	local i = 1 	while (1) do 		local systemClassn = "class" .. i 		local systemDatan = "data" .. i 		local systemArgn = args['system' .. i] 		 		infobox_args[systemClassn] = "hlist" 		infobox_args[systemDatan] = systemArgn 		 			if i == 10 then 				break 			else 				i = i + 1 			end 		end 	 	return frame:expandTemplate ({title='Infobox', args = infobox_args}) 	end end  function p.system(frame) 	local args = getArgs(frame) 	return system(args) end  -- ROUTE INFORMATION HEADER  local function info(args) 	local maint = maint(args) 	local law = law(args) 	local period = period_params(args) 	local existed = args.established or args.formed or nil 	local spur = args.spur_type or args.spur_of or nil 	local part = partOf(args) 	 	if period == true or spur ~= nil or part ~= nil or existed ~= nil or maint ~= nil or args.section or args.length_mi or args.length_km or args.allocation or args.history or args.restrictions or args.tourist or args.status or args.margary then 		return "পথের তথ্য" 	else 		return nil 	end end  function p.info(frame) 	local args = getArgs(frame) 	return info(args) end  -- HIGHWAY SYSTEM HEADER  local function highwaySystem(args) 	if args.nobrowse then return nil end 	local country = country(args) 	 	if country == nil then 		return nil 	elseif country == "GBR" or country == "ENG" or country == "NIR" or country == "SCT" or country == "WLS" or 		country == "GGY" or country == "IMN" or country == "JEY" or country == "AIA" or country == "BMU" or 		country == "IOT" or country == "VGB" or country == "CYM" or country == "FLK" or country == "GIB" or 		country == "MSR" or country == "PCN" or country == "SHN" or country == "SGS" or country == "TCA" then 		return "Road network" 		else return "মহাসড়ক ব্যবস্থা" 	end end  function p.highwaySystem(frame) 	local args = getArgs(frame) 	return highwaySystem(args) end  return p