Модуль:Якорь (Bk;rl,&Xtkj,)

Перейти к навигации Перейти к поиску
Документация

Модуль предназначен для создания якорей. На нем работают шаблоны {{якорь}} и {{видимый якорь}}. Также его можно использовать в других модулях.

Использование

Для начала необходимо загрузить модуль:

local anchor = require('Модуль:Якорь').main

Можно использовать неограниченное количество параметров:

anchor(anchor1, anchor2, ...)

Также параметр visible (или v) позволяет выбрать первый якорь в качестве текста, который будет подсвечиваться при переходе, либо отдельно указать этот текст через параметр text:

anchor{visible = true, visible_anchor, anchor2, ...}
или
anchor{visible = true, text = 'какой-то текст', anchor1, anchor2, ...}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local compressSparseArray = require('Module:TableTools').compressSparseArray
local p = {}

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

function p._main(anchor, text, visible)
	local result = mw.html.create('span')
		:attr('id', anchor)
		:wikitext(text)
	if visible then
		result:addClass('highlight-target')
	end
	return tostring(result)
end

function p.main(...)
	local args = unpack(...)
	local anchors = compressSparseArray(args)
	local text
	local visible = yesno(args.visible or args.v)
	if visible then
		text = args.text or args['текст'] or args[1]
	end

	local result = text
	for i, v in ipairs(anchors) do
		result = p._main(anchors[i], result, visible)
	end

	return result
end

return p