Warning: mkdir(): Disk quota exceeded in /lilacspace/sites/en.wiki.akricia.ru/vendor/wikimedia/shellbox/src/FileUtils.php on line 113
Module:Якорь - Akricia Encyclopedia

Module:Якорь

Revision as of 08:21, 8 January 2024 by Unifiedakricia (talk | contribs) (Новая страница: «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.cre...»)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:Якорь/doc

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)
		--[[
			создание старого вида якорей для совместимости,
			см. Обсуждение шаблона:Якорь#Новые html5 ссылки и старые
		]]
		local encoded_anchor = mw.uri.encode(anchors[i], 'WIKI'):gsub('%%', '.')
		if anchors[i] ~= encoded_anchor then
			result = p._main(encoded_anchor, result, visible)
		end
	end

	return result
end

return p