Модуль:Якорь: различия между версиями
Перейти к навигации
Перейти к поиску
imported>Serhio Magpie м (По запросу - https://ru.wikipedia.org/?diff=101789744) |
imported>Stjn (возможность использовать модуль в других модулях) |
||
Строка 3: | Строка 3: | ||
local compressSparseArray = require('Module:TableTools').compressSparseArray | local compressSparseArray = require('Module:TableTools').compressSparseArray | ||
local p = {} | local p = {} | ||
local function unpack(...) | local function unpack(...) | ||
Строка 25: | Строка 15: | ||
end | end | ||
return args | 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 | end | ||
Строка 38: | Строка 38: | ||
local result = text | local result = text | ||
for i, v in ipairs(anchors) do | for i, v in ipairs(anchors) do | ||
result = | result = p._main(anchors[i], result, visible) | ||
--[[ | --[[ | ||
создание старого вида якорей для совместимости, | создание старого вида якорей для совместимости, | ||
Строка 45: | Строка 45: | ||
local encoded_anchor = mw.uri.encode(anchors[i], 'WIKI'):gsub('%%', '.') | local encoded_anchor = mw.uri.encode(anchors[i], 'WIKI'):gsub('%%', '.') | ||
if anchors[i] ~= encoded_anchor then | if anchors[i] ~= encoded_anchor then | ||
result = | result = p._main(encoded_anchor, result, visible) | ||
end | end | ||
end | end |
Текущая версия на 22:33, 14 декабря 2022
Для документации этого модуля может быть создана страница Модуль:Якорь/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