Модуль:Якорь: различия между версиями
Перейти к навигации
Перейти к поиску
[[:ru:]]>Jack who built the house (Обсуждение шаблона:Якорь#Новые html5 ссылки и старые, оформление) |
Yegor (обсуждение | вклад) м (29 версий импортировано) |
||
(не показано 12 промежуточных версий 5 участников) | |||
Строка 1: | Строка 1: | ||
− | + | local getArgs = require('Module:Arguments').getArgs | |
− | + | local yesno = require('Module:Yesno') | |
− | + | local compressSparseArray = require('Module:TableTools').compressSparseArray | |
− | + | local p = {} | |
− | + | ||
− | + | local function add_anchor(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 | |
− | + | ||
− | + | 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(...) | ||
+ | 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 = add_anchor(anchors[i], result, visible) | ||
+ | --[[ | ||
+ | создание старого вида якорей для совместимости, | ||
+ | см. Обсуждение шаблона:Якорь#Новые html5 ссылки и старые | ||
+ | ]] | ||
+ | local encoded_anchor = mw.uri.encode(anchors[i], 'WIKI'):gsub('%%', '.') | ||
+ | if anchors[i] ~= encoded_anchor then | ||
+ | result = add_anchor(encoded_anchor, result, visible) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | return result | ||
+ | end | ||
+ | |||
+ | return p |
Текущая версия на 11:31, 13 февраля 2021
Для документации этого модуля может быть создана страница Модуль:Якорь/doc
local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local compressSparseArray = require('Module:TableTools').compressSparseArray local p = {} local function add_anchor(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 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(...) 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 = add_anchor(anchors[i], result, visible) --[[ создание старого вида якорей для совместимости, см. Обсуждение шаблона:Якорь#Новые html5 ссылки и старые ]] local encoded_anchor = mw.uri.encode(anchors[i], 'WIKI'):gsub('%%', '.') if anchors[i] ~= encoded_anchor then result = add_anchor(encoded_anchor, result, visible) end end return result end return p