Модуль:Якорь

Материал из Н.Ф. Федоров
Версия от 17:08, 14 апреля 2018; Petrov (обсуждение | вклад) (1 версия импортирована)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Для документации этого модуля может быть создана страница Модуль:Якорь/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