Module:Jcttop/core

local p = {}

local format = string.format -- Local version of string formatting function

local function hatnote(args)
	local insert = table.insert
	local text = {args.region_note}
	local tense
	
	local hatnoteArg = args.hatnote
	if hatnoteArg == 'off' then
		insert(text, '')
	elseif hatnoteArg then
		insert(text, hatnoteArg .. " ")
	else
		local indep_city = args.indep_city
		local sub1 = args.sub1
		local sub2 = args.sub2
		if indep_city or sub1 or sub2 then
			local region = args.region
			tense = args.former == 'yes'
			local verb = tense and 'was' or 'is'
			insert(text, format("The entire %s %s in ", args.type or 'route', verb))
			if indep_city then
				insert(text, format("[[%s, %s|%s]]", indep_city, region, indep_city))
			else
				local sub1name = args.sub1name
				if sub2 then
					insert(text, "[[" .. sub2)
					local area = args.area
					if area then
						insert(text, format(" (%s)", area))
					end
					if args.sub1dab == 'yes' then
						insert(text, format(", %s %s", sub1, sub1name))
					end
					insert(text, format(", %s|%s]]", region, sub2))
				end
				if sub1 then
					if sub2 then
						insert(text, ', ')
					end
					insert(text, format("[[%s %s, %s|%s %s]]", sub1, sub1name, region, sub1, sub1name))
				end
			end
		insert(text, '. ')
		insert(text, args.sub1_ref)
		insert(text, args.sub2_ref)
		end
	end
	
	if args.unnum == 'yes' then
		insert(text, format("All exits %s unnumbered.", tense and 'were' or 'are'))
	end
	
	return mw.text.trim(table.concat(text))
end

local function header(args)
	local row = mw.html.create('tr')
	local region_col = args.region_col
	if region_col then
		row:tag('th'):attr('scope', 'col'):wikitext(mw.language.getContentLanguage():ucfirst(region_col))
	end
	
	local indep_city = args.indep_city
	if not(args.nosub1 == 'yes' or args.sub1 or indep_city) then
		local tag = row:tag('th'):attr('scope', 'col')
		local sub1disp = args.sub1disp
		if sub1disp then
			tag:wikitext(sub1disp)
		else
			tag:wikitext(args.sub1name):wikitext(args.sub1_ref)
		end
	end
	
	if not(args.sub2 or indep_city) then
		row:tag('th'):attr('scope', 'col')
			:wikitext(args.location_def or 'Location'):wikitext(args.sub2_ref)
	end
	
	local altunit = args.altunit
	if altunit then
		row:tag('th'):attr('scope', 'col'):wikitext(altunit):wikitext(args.altunit_ref)
	else
		local unit = args.length or args.unit
		if unit ~= 'off' then
			row:tag('th'):attr('scope', 'col'):wikitext(unit):wikitext(args.length_ref):done():tag('th'):attr('scope', 'col'):wikitext(args.unit2)
		end
	end
	
	local exit = args[1]
	if exit == 'old' then
		row:tag('th'):attr('scope', 'col'):wikitext(args.old_def or 'Old exit'):wikitext(args.old_ref)
		row:tag('th'):attr('scope', 'col'):wikitext(args.exit_def or 'New exit'):wikitext(args.exit_ref)
	elseif exit == 'exit' then
		row:tag('th'):attr('scope', 'col'):wikitext(args.exit_def or 'Exit'):wikitext(args.exit_ref)
	end
	
	if args[2] == 'name' then
		row:tag('th'):attr('scope', 'col'):wikitext(args.name_def or 'Name'):wikitext(args.name_ref)
	end
	
	row:tag('th'):attr('scope', 'col'):wikitext(args.dest_def or 'Destinations'):wikitext(args.dest_ref)
	
	row:tag('th'):attr('scope', 'col'):wikitext(args.notes_def or 'Notes'):wikitext(args.notes_ref)
	
	return '\n{| class="plainrowheaders wikitable"\n' .. tostring(row)
end

function p._jcttop(args)
	-- This function calls two other functions to generate a hatnote and header row.
	-- This function is accessible from other Lua modules.
	return hatnote(args) .. header(args)
end

function p.jcttop(frame)
	-- Entry function for {{jcttop/core}}
	return p._jcttop(require('Module:Arguments').getArgs(frame)) -- Simply call another function with those arguments to actually create the header.
end

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.