<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.miranda-ng.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ATOC</id>
	<title>Module:TOC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.miranda-ng.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ATOC"/>
	<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Module:TOC&amp;action=history"/>
	<updated>2026-10-18T00:09:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.miranda-ng.org/index.php?title=Module:TOC&amp;diff=16372&amp;oldid=prev</id>
		<title>Goraf: -</title>
		<link rel="alternate" type="text/html" href="https://wiki.miranda-ng.org/index.php?title=Module:TOC&amp;diff=16372&amp;oldid=prev"/>
		<updated>2015-07-28T16:42:30Z</updated>

		<summary type="html">&lt;p&gt;-&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements various templates that create custom tables of&lt;br /&gt;
-- contents.&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local checkType = require(&amp;#039;libraryUtil&amp;#039;).checkType&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeTocLink(page, display)&lt;br /&gt;
	display = display or page&lt;br /&gt;
	return string.format(&amp;#039;[[#%s|%s]]&amp;#039;, page, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeToc(s, args)&lt;br /&gt;
	-- Make a TOC box from a string and from the given table of arguments.&lt;br /&gt;
	checkType(&amp;#039;makeToc&amp;#039;, 1, s, &amp;#039;string&amp;#039;)&lt;br /&gt;
	checkType(&amp;#039;makeToc&amp;#039;, 2, args, &amp;#039;table&amp;#039;, true)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
&lt;br /&gt;
	-- Root&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
	local isPrimary = yesno(args.primary) ~= false&lt;br /&gt;
	if isPrimary then&lt;br /&gt;
		root:wikitext(&amp;#039;__NOTOC__&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Top div tag&lt;br /&gt;
	local top = root:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
	top:addClass(&amp;#039;toc plainlinks hlist&amp;#039;)&lt;br /&gt;
	if isPrimary then&lt;br /&gt;
		top:attr(&amp;#039;id&amp;#039;, &amp;#039;toc&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local align = args.align and args.align:lower()&lt;br /&gt;
	if align == &amp;#039;left&amp;#039; then&lt;br /&gt;
		top&lt;br /&gt;
			:css(&amp;#039;float&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;clear&amp;#039;, args.clear or &amp;#039;left&amp;#039;)&lt;br /&gt;
	elseif align == &amp;#039;right&amp;#039; then&lt;br /&gt;
		top&lt;br /&gt;
			:css(&amp;#039;float&amp;#039;, &amp;#039;right&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;clear&amp;#039;, args.clear or &amp;#039;right&amp;#039;)&lt;br /&gt;
	elseif align == &amp;#039;center&amp;#039; then&lt;br /&gt;
		top&lt;br /&gt;
			:css(&amp;#039;margin&amp;#039;, &amp;#039;auto&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;clear&amp;#039;, args.clear or &amp;#039;none&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		top&lt;br /&gt;
			:css(&amp;#039;clear&amp;#039;, args.clear or &amp;#039;left&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	top:newline()&lt;br /&gt;
&lt;br /&gt;
	-- Title div tag&lt;br /&gt;
	local title = args.title or mw.message.new(&amp;#039;Toc&amp;#039;):plain()&lt;br /&gt;
	local titleDiv = top:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
	titleDiv:attr(&amp;#039;id&amp;#039;, &amp;#039;toctitle&amp;#039;)&lt;br /&gt;
	if isPrimary then&lt;br /&gt;
		titleDiv:wikitext(&amp;#039;&amp;lt;h2&amp;gt;&amp;#039; .. title .. &amp;#039;&amp;lt;/h2&amp;gt;&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		titleDiv:tag(&amp;#039;strong&amp;#039;):wikitext(title)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Content&lt;br /&gt;
	top&lt;br /&gt;
		:newline()&lt;br /&gt;
		:wikitext(s)&lt;br /&gt;
		:newline()&lt;br /&gt;
	&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._years(args)&lt;br /&gt;
	local i = tonumber(args.startyear) or 1900&lt;br /&gt;
	local endYear = tonumber(args.endyear) or 1950&lt;br /&gt;
	local range = tonumber(args.range)&lt;br /&gt;
	local step = tonumber(args.step) or 1&lt;br /&gt;
	local links = {}&lt;br /&gt;
	while i &amp;lt;= endYear do&lt;br /&gt;
		local year = tostring(i)&lt;br /&gt;
		if range then&lt;br /&gt;
			year = year .. &amp;#039;-&amp;#039; .. tostring(i + range)&lt;br /&gt;
		end&lt;br /&gt;
		links[#links + 1] = makeTocLink(year)&lt;br /&gt;
		i = i + step&lt;br /&gt;
	end&lt;br /&gt;
	if #links &amp;gt; 0 then&lt;br /&gt;
		links = &amp;#039;* &amp;#039; .. table.concat(links, &amp;#039; &amp;#039;)&lt;br /&gt;
		return makeToc(links, args)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._list(args)&lt;br /&gt;
	-- Set up the variables.&lt;br /&gt;
	local noRows = 4 -- The number of rows, starting at key &amp;quot;a&amp;quot;. Must be 26 or less.&lt;br /&gt;
	local alphabetPosition = 3 -- The position of the extra alphabet row.&lt;br /&gt;
	local lists, chars = {}, {}&lt;br /&gt;
	for i = 1, noRows do&lt;br /&gt;
		lists[i] = {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the relevant keys from the arguments.&lt;br /&gt;
	local a = 97&lt;br /&gt;
	local endChar = string.char(a + noRows - 1)&lt;br /&gt;
	local pattern = string.format(&amp;#039;^([a-%s])([1-9][0-9]*)$&amp;#039;, endChar)&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local letter, num&lt;br /&gt;
		if type(k) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			letter, num = k:match(pattern)&lt;br /&gt;
		end&lt;br /&gt;
		if letter then&lt;br /&gt;
			local iRow = string.byte(letter) - a + 1&lt;br /&gt;
			table.insert(lists[iRow], {num = tonumber(num), section = v})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sort the tables and replace the value tables with the section name.&lt;br /&gt;
	for i, valueTables in pairs(lists) do&lt;br /&gt;
		table.sort(valueTables, function(t1, t2)&lt;br /&gt;
			return t1.num &amp;lt; t2.num&lt;br /&gt;
		end)&lt;br /&gt;
		for j, valueTable in ipairs(valueTables) do&lt;br /&gt;
			lists[i][j] = valueTable.section&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the extra alphabet row.&lt;br /&gt;
--	local A = 65&lt;br /&gt;
--	local alphabetRow = {}&lt;br /&gt;
--	for i = 1, 26 do&lt;br /&gt;
--		local char = string.char(A + i - 1)&lt;br /&gt;
--		alphabetRow[i] = char&lt;br /&gt;
--	end&lt;br /&gt;
--	table.insert(lists, alphabetPosition, alphabetRow)&lt;br /&gt;
&lt;br /&gt;
	-- Render the rows.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, sections in ipairs(lists) do&lt;br /&gt;
		if #sections &amp;gt; 0 then&lt;br /&gt;
			ret[#ret + 1] = &amp;#039;&amp;lt;div&amp;gt;&amp;#039;&lt;br /&gt;
			for j, section in ipairs(sections) do&lt;br /&gt;
				ret[#ret + 1] = &amp;#039;* &amp;#039; .. makeTocLink(section)&lt;br /&gt;
			end&lt;br /&gt;
			ret[#ret + 1] = &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return makeToc(table.concat(ret, &amp;#039;\n&amp;#039;), args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
setmetatable(p, {__index = function(t, k)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
			wrappers = {&lt;br /&gt;
				&amp;#039;Template:TOCyears&amp;#039;,&lt;br /&gt;
				&amp;#039;Template:List TOC&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		})&lt;br /&gt;
		return p[&amp;#039;_&amp;#039; .. k](args)&lt;br /&gt;
	end&lt;br /&gt;
end})&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Goraf</name></author>
	</entry>
</feed>