From Wikipedia, the free encyclopedia


require('strict')

local p = {}

local horizontal = require('Module:List').horizontal

local start = [[

__NOTOC__<div id="toc" class="toc plainlinks" role="navigation" aria-labelledby="mw-toc-heading">

<div class="toctitle"><h2 id="mw-toc-heading">Contents</h2></div>

]]



local close = [[</div>]]



local function make_TOC_item(anchor, link_text)

	link_text = link_text or anchor

	return ("[[#%s|%s]]"):format(anchor, link_text)

end



local Array_mt = { __index = table }

local function Array()

	return setmetatable({}, Array_mt)

end



function p.make_TOC(frame)

	local content = mw.title.getCurrentTitle():getContent()

	

	if not content then

		error "The current page has no content"

	end

	

	local letters = Array()

	-- 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(make_TOC_item(letter))

	end

	

	local yesno = require('Module:Yesno')

	local rest = Array()

	local other_headers = require('Module:TableTools').listToSet{

		"See also", "References", "Notes", "Further reading", "External links",

	}

	for header in content:gmatch "%f[^\n]==%s*(..-)%s*==%f[^=]" do

		if other_headersheader then

			rest:insert(make_TOC_item(header))

		end

	end

	

	return start .. horizontal(letters) .. horizontal(rest) .. close

end



return p
From Wikipedia, the free encyclopedia


require('strict')

local p = {}

local horizontal = require('Module:List').horizontal

local start = [[

__NOTOC__<div id="toc" class="toc plainlinks" role="navigation" aria-labelledby="mw-toc-heading">

<div class="toctitle"><h2 id="mw-toc-heading">Contents</h2></div>

]]



local close = [[</div>]]



local function make_TOC_item(anchor, link_text)

	link_text = link_text or anchor

	return ("[[#%s|%s]]"):format(anchor, link_text)

end



local Array_mt = { __index = table }

local function Array()

	return setmetatable({}, Array_mt)

end



function p.make_TOC(frame)

	local content = mw.title.getCurrentTitle():getContent()

	

	if not content then

		error "The current page has no content"

	end

	

	local letters = Array()

	-- 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(make_TOC_item(letter))

	end

	

	local yesno = require('Module:Yesno')

	local rest = Array()

	local other_headers = require('Module:TableTools').listToSet{

		"See also", "References", "Notes", "Further reading", "External links",

	}

	for header in content:gmatch "%f[^\n]==%s*(..-)%s*==%f[^=]" do

		if other_headersheader then

			rest:insert(make_TOC_item(header))

		end

	end

	

	return start .. horizontal(letters) .. horizontal(rest) .. close

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook