Модуль:Ссылка на шаблон: различия между версиями

Материал из Space Station 14 Вики
Новая страница: «local p = {} function p.link(frame) local text = frame.args[1] or "" if text == "" then return "" end local target, display -- Если первая буква равна ":" if text:sub(1,1) == ":" then -- Убираем начальный двоеточие local noColon = text:sub(2) -- Если после ":" идёт "Шаблон:" – удаляем и его для отображения if noColon:sub(1,7) == "Ша...»
 
мНет описания правки
 
(не показано 8 промежуточных версий этого же участника)
Строка 2: Строка 2:


function p.link(frame)
function p.link(frame)
  local text = frame.args[1] or ""
local text = frame.args[1] or ""
  if text == "" then
if text == "" then
    return ""
return ""
  end
end


  local target, display
local target, display, prefix


  -- Если первая буква равна ":"
local ustring = mw.ustring
  if text:sub(1,1) == ":" then
-- Если строка начинается с "":""
    -- Убираем начальный двоеточие
if ustring.sub(text, 1, 1) == ":" then
    local noColon = text:sub(2)
target = ustring.sub(text, 2)
    -- Если после ":" идёт "Шаблон:" – удаляем и его для отображения
display = text
    if noColon:sub(1,7) == "Шаблон:" then
      noColon = noColon:sub(8)
    end
    target = noColon
    display = noColon


  -- Если строка начинается с "Модуль:"
-- Если строка начинается с "Модуль:"
  elseif text:sub(1,7) == "Модуль:" then
elseif ustring.sub(text, 1, 7) == "Модуль:" then
    -- Для целевой страницы заменяем "Модуль:" на "#invoke:"
target = text
    target = "#invoke:" .. text:sub(8)
display = ustring.sub(text, 8)
    -- Отображаем оригинальный текст (можно, при необходимости, его изменить)
prefix = "#invoke:"
    display = text


  -- Если строка начинается с "Шаблон:"
-- Если строка начинается с "Шаблон:"
  elseif text:sub(1,7) == "Шаблон:" then
elseif text:sub(1,7) == "Шаблон:" then
    -- Не добавляем второй префикс "Шаблон:"; для отображения убираем его
target = text
    target = text
display = text:sub(8)
    display = text:sub(8)


  -- Если строка начинается с "Файл:"
-- Если строка начинается с "Файл:"
  elseif text:sub(1,6) == "Файл:" then
elseif text:sub(1,6) == "Файл:" then
    -- Для ссылки используем всю строку, а для отображения убираем префикс
target = text
    target = text
display = text:sub(7)
    display = text:sub(7)


  -- Если строка начинается с "Категория:"
-- Если строка начинается с "Категория:"
  elseif text:sub(1,10) == "Категория:" then
elseif text:sub(1,10) == "Категория:" then
    target = text
target = text
    display = text:sub(11)
display = text:sub(11)


  -- Если обычная строка – добавляем в начало префикс "Шаблон:"
-- Если обычная строка – добавляем в начало префикс "Шаблон:"
  else
else
    target = "Шаблон:" .. text
target = "Шаблон:" .. text
    display = text
display = text
  end
end


  return string.format("[[%s|%s]]", target, display)
return frame:preprocess(string.format("<nowiki>%s</nowiki>[[%s|%s]]", prefix or "", target, display))
end
end


return p
return p

Текущая версия от 21:47, 23 февраля 2025

Для документации этого модуля может быть создана страница Модуль:Ссылка на шаблон/doc

local p = {}

function p.link(frame)
	local text = frame.args[1] or ""
	if text == "" then
		return ""
	end

	local target, display, prefix

	local ustring = mw.ustring
	-- Если строка начинается с "":""
	if ustring.sub(text, 1, 1) == ":" then
		target = ustring.sub(text, 2)
		display = text

	-- Если строка начинается с "Модуль:"
	elseif ustring.sub(text, 1, 7) == "Модуль:" then
		target = text
		display = ustring.sub(text, 8)
		prefix = "#invoke:"

	-- Если строка начинается с "Шаблон:"
	elseif text:sub(1,7) == "Шаблон:" then
		target = text
		display = text:sub(8)

	-- Если строка начинается с "Файл:"
	elseif text:sub(1,6) == "Файл:" then
		target = text
		display = text:sub(7)

	-- Если строка начинается с "Категория:"
	elseif text:sub(1,10) == "Категория:" then
		target = text
		display = text:sub(11)

	-- Если обычная строка – добавляем в начало префикс "Шаблон:"
	else
		target = "Шаблон:" .. text
		display = text
	end

	return frame:preprocess(string.format("<nowiki>%s</nowiki>[[%s|%s]]", prefix or "", target, display))
end

return p