Difference between revisions of "Module:Auto compact ToC"

From blackwiki
Jump to navigation Jump to search
blackwiki>Erutuon
(__NOTOC__)
blackwiki>Erutuon
(heh)
Line 15: Line 15:
 
local letters = setmetatable({}, { __index = table })
 
local letters = setmetatable({}, { __index = table })
 
-- Find uppermost headers containing a single ASCII letter.
 
-- Find uppermost headers containing a single ASCII letter.
for letter in content:gmatch "%f[^\n]==%s*(%a)%s*==%f[^==]" do
+
for letter in content:gmatch "%f[^\n]==%s*(%a)%s*==%f[^=]" do
 
letter = letter:upper()
 
letter = letter:upper()
 
letters:insert(("* [[#%s|%s]]"):format(letter, letter))
 
letters:insert(("* [[#%s|%s]]"):format(letter, letter))

Revision as of 23:19, 12 August 2018

Implements {{auto compact ToC}}


local p = {}

local start = [[
__NOTOC__
<div role="navigation" id="toc" class="toc plainlinks hlist" aria-labelledby="tocheading" style="text-align:left;">
<div id="toctitle" class="toctitle" style="text-align:center;"><span id="tocheading" style="font-weight:bold;">Contents</span></div>
<div style="margin:auto;white-space:nowrap;">
]]

local close = [[</div></div>]]

function p.make_TOC()
	local content = mw.title.getCurrentTitle():getContent()
	
	local letters = setmetatable({}, { __index = table })
	-- Find uppermost headers containing a single ASCII letter.
	for letter in content:gmatch "%f[^\n]==%s*(%a)%s*==%f[^=]" do
		letter = letter:upper()
		letters:insert(("* [[#%s|%s]]"):format(letter, letter))
	end
	
	return start .. letters:concat("\n") .. close
end

return p