Toggle menu
9
204
50
18.7K
KenshiDB
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Subpages:

About

This TOC is meant for numbered lists of minor planets with 1000 entries, namely the List of minor planets and Meanings of minor planet names series.

To be functional for long lists, the list page must have anchors named "001", "101", "201", ..., "901". In a table, this can be done by adding id="001" to a cell's parameters. Outside of a table, this can be done by adding {{Anchor|001}}.

If a list contains only several entries (i.e. for pages containing minor planets numbered above 100,000), this TOC may still be used to navigate ± 5,000 entries in either direction, which is larger than {{MinorPlanetNameMeaningsFooter}}'s succession-box navigation of ± 1,000.

Usage

{{TOC001}}

See also

Template:Minor planet link templates/See also



local p = {}

function p.TOC001( frame )
	local title = mw.title.getCurrentTitle()
	local pn = title.text
	local pagebase = mw.ustring.match(pn, '^(List of minor planets: )%d') or
					 mw.ustring.match(pn, '^(Meanings of minor[ -]planet names: )%d') or
					 'testcase'
	local parent_from = mw.ustring.match(pn, '(%d+)–') or 0 --en dash; 1, 1001, 2001, ...
	local prefix = (parent_from - 1)/1000 --0, 1, 2, ...
	local left = parent_from - 5000 --left-most navigational 'from'; floor = 1
	local hlist, anchor
	local nav_upper, nav_lower = '', ''
	
	--testcase prep
	if pagebase == 'testcase' then --obsolete parameters allowed only on non-LoMP|MoMP pages
		local args = frame:getParent().args
		if mw.ustring.match(pn, '(TOC001)') or
		   mw.ustring.match(pn, '(MinorPlanetListFooter)')
		then
			args.prefix = 1
		end
		if args.prefix then
			prefix = args.prefix
			if prefix == 0 then parent_from = 1
			else parent_from = prefix..'001' end
			left = parent_from - 5000
			if args.meanings then
				pagebase = 'Meanings of minor planet names: '
			else
				pagebase = 'List of minor planets: '
			end
		else
			return '{{[[Template:TOC001|TOC001]]}} requires a <code>|prefix=</code> outside of [[LoMP]]/[[MoMP]]-space.'
		end
	end
	
	--hlist
	if pagebase == 'List of minor planets: ' then
		hlist = frame:expandTemplate{
					title = 'Hlist',
					args = { 
						'[[LoMP#Main index|Index]]',
						'[[LoMP#100K|100K]]',
						'[[LoMP#200K|200K]]',
						'[[LoMP#300K|300K]]',
						'[[LoMP#400K|400K]]',
						'[[LoMP#500K|500K]]',
						'[[LoMP#600K|600K]]',
						'[[List of minor planets#Orbital groups|color code]]',
					}
				}
	else --MoMP
		hlist = frame:expandTemplate{
					title = 'Hlist',
					args = { 
						'[[MoMP#Index|Index]]',
						'[[MoMP#100K|100K]]',
						'[[MoMP#200K|200K]]',
						'[[MoMP#300K|300K]]',
						'[[MoMP#400K|400K]]',
						'[[MoMP#500K|500K]]',
						'[[MoMP#600K|600K]]',
					}
				}
	end
	
	--TOC top
	local TOC_top = frame:expandTemplate{
						title = 'TOC top',
						args = { 
							align = 'center',
							title = '<div style="background-color: #eaecf0; margin-bottom: 8px; padding: 2px;">'..
							hlist..
							'</div>'
						}
					}
	
	--nav_upper
	if left < 1 then left = 1 end
	local i = 0
	while i <= 10 do
		local from = left   + 1000*i
		local to   = left-1 + 1000*(i+1)
		local sep = ' '
		if from < 1500 then sep = '-' end --TODO: RFM to the correct form
		pagebase = string.gsub(pagebase, '(minor)[ -](planet names)', '%1'..sep..'%2')
		nav_upper = nav_upper..'\n* [['..pagebase..from..'–'..to..'|'..
					mw.getContentLanguage():formatNum(from - 1)..'s]]'
		i = i + 1
	end
	
	--nav_lower
	i = 0
	while i <= 9 do
		anchor = i..'01' --001, 002, ...
		nav_lower = nav_lower..'\n* [[#'..anchor..'|'..
					mw.getContentLanguage():formatNum(tonumber(prefix..anchor))..'…]]'
		i = i + 1
	end
	
	--cleanup nav_ for lowest numbered pages (do this once after the whiles, instead of conditionals inside)
	nav_upper = string.gsub(nav_upper, '|0s]]',   '|1–1000]]')
	nav_lower = string.gsub(nav_lower, '|001…]]', '|1–100]]')
	
	--TOC bottom
	local TOC_bottom = frame:expandTemplate{ title = 'TOC bottom', args = {} }
	
	--concat all
	return TOC_top..nav_upper..'\n<hr />\n<div style="text-align: center">'..nav_lower..'\n</div>'..TOC_bottom
end

return p