Модуль:TOC

Эта страница частично защищена от изменения
Материал из Викисловаря
Документация

Модуль формирования оглавления страницы.

Описание функций и параметров

  • toList — функция форматирования списка ссылок на разделы.
    Принимает три параметра, которые могут иметь значения:
    1. page= — заголовок страницы (по умолчанию текущая)
    2. namespace= — пространство имен страницы, если оно не указано в page
    3. level= — уровень разделов, которые нужно включить в список (по умолчанию = 2)
    Пример: {{#invoke:TOC|toList|page=Русский язык/Фамилии/К|namespace=Индекс}}Ка · Кв · Ке · Ки · Кл · Кн · Ко · Кр · Кс · Кт · Ку
p = {}

function p.toList(frame)
	local page = mw.ustring.gsub(frame.args['page'] or '', '_', ' ')
	local namespace = frame.args['namespace'] or ''
	local level = frame.args['level'] or 2
	local fullpage = ''
	local title;
	if page == '' then
		title = mw.title.getCurrentTitle()
        assert(title,"failed to access mw.title.getCurrentTitle")
    else
        title = mw.title.new(page, namespace)
        assert(title,"failed to access mw.title.new("..tostring(page)..")")
        if namespace ~= '' then
        	fullpage = namespace .. ':' .. page
        else
        	fullpage = page
        end
	end
	local text = title:getContent()
	text = mw.ustring.gsub( text, "<!%-%-.-%-%->", "" ) -- убираем HTML комментарии
	
	local hpref = mw.ustring.rep("=", tonumber(level))
	local pattern = "\n%s*" .. hpref .. "%s*([^=]-)%s*" .. hpref .."%s*\n"
	local toc = {}
	for head in mw.ustring.gmatch(text, pattern) do
		table.insert(toc, '[[' .. fullpage ..'#' .. head .. '|' .. head .. ']]')
	end
	return table.concat(toc, ' · ')
end

return p;