Модуль:Якорь — различия между версиями

Материал из Н.Ф. Федоров
Перейти к: навигация, поиск
м (Защитил Модуль:Якорь: критический шаблон или модуль ([Редактирование=только администраторы] (бессрочно) [Переименование=только админис…)
 
м (1 версия импортирована)
 
(нет различий)

Текущая версия на 17:08, 14 апреля 2018

Для документации этого модуля может быть создана страница Модуль:Якорь/doc

local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local p = {}

local function _main(args)
	local anchors = {}
	local visible = yesno(args.visible or args.v)
	local i = 1
	while args[i] do
		local text, class
		if i == 1 and visible then
			text = args.text or args['текст'] or args[1]
			class = 'citation'
		end
		anchors[i] = tostring(
			mw.html.create('span')
				:attr('id', args[i])
				:addClass(class or '')
				:wikitext(text or '')
		)
		--[[
			создание старого вида якорей для совместимости, 
			см. Обсуждение шаблона:Якорь#Новые html5 ссылки и старые 
		]]
		local url_encoded = mw.uri.encode(args[i], 'WIKI'):gsub('%%', '.')
		if args[i] ~= url_encoded then
			anchors[i] = anchors[i] .. tostring(
				mw.html.create('span')
					:attr('id', url_encoded)
			)
		end
		i = i + 1
	end
	return table.concat(anchors)
end

function p.main(...)
	local frame = ...
	local args
	if type(frame.args) == 'table' then
		args = getArgs(frame)
	elseif type(frame) == 'table' then
		args = frame
	else 
		args = {frame}
	end
	return _main(args)
end

return p