Модуль:Template call code: различия между версиями

Перейти к навигации Перейти к поиску
118 байт добавлено ,  4 года назад
нет описания правки
(Керла агӀо: «local getArgs = require('Module:Arguments').getArgs local ce = mw.language.new('ce') local p = {} -- Лело йеза хIара гуран чура цхьа йолу...»)
 
Нет описания правки
Строка 1: Строка 1:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local ce = mw.language.new('ce')
local ru = mw.language.new('ru')


local p = {}
local p = {}


-- Лело йеза хIара гуран чура цхьа йолу хIумна дIайаха
-- Используется для того, чтобы можно было удалять элементы из таблицы
local function copy(other)
local function copy(other)
local res = {}
local res = {}
Строка 29: Строка 29:
table.remove(args, 1)
table.remove(args, 1)
-- Ишта цхьа йерш «=» дуьхьарлера барамца
-- Вещи типа «=» в первом параметре
if not name then
if not name then
for k, v in pairs(args) do
for k, v in pairs(args) do
Строка 63: Строка 63:
if name then
if name then
local trimmedName = mw.text.trim(name)
local trimmedName = mw.text.trim(name)
if ce:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'subst:' then
if ru:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'subst:' then
flags.subst = true
flags.subst = true
name = mw.ustring.sub(trimmedName, 7)
name = mw.ustring.sub(trimmedName, 7)
end
end
if ce:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'бухе:' then
if ru:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'подст:' then
flags.podst = true
flags.podst = true
name = mw.ustring.sub(trimmedName, 7)
name = mw.ustring.sub(trimmedName, 7)
Строка 87: Строка 87:
local currentTitle = mw.title.getCurrentTitle()
local currentTitle = mw.title.getCurrentTitle()
-- Цхьаболу охьабаитина барамца схьаоьца кепа цIе агIон цIарах
-- При опущенном первом параметре берём имя шаблона из названия страницы
if name == '' or not name then
if name == '' or not name then
local currentTitleRoot = currentTitle.rootText
local currentTitleRoot = currentTitle.rootText
if not flags.ucFirst and
if not flags.ucFirst and
((ce:uc(currentTitleRoot) ~= currentTitleRoot and
((ru:uc(currentTitleRoot) ~= currentTitleRoot and
-- Канига:ЛиттинатIурах йогIуш йу, TranslateDate
-- Книга:Литературное наследство, TranslateDate
not mw.ustring.match(currentTitleRoot, '^[А-Яа-яA-Za-z]+:?[А-ЯA-Z]')
not mw.ustring.match(currentTitleRoot, '^[А-Яа-яA-Za-z]+:?[А-ЯA-Z]')
) or
) or
Строка 98: Строка 98:
)
)
then
then
name = ce:lcfirst(currentTitleRoot)
name = ru:lcfirst(currentTitleRoot)
else
else
name = currentTitleRoot
name = currentTitleRoot
Строка 106: Строка 106:
local global = flags.global or mw.ustring.sub(name, 1, 1) == ':'
local global = flags.global or mw.ustring.sub(name, 1, 1) == ':'
-- Ишар схьалахьо дуьлало вай
-- Начинаем собирать код
local linkBody, titleObject, linkBegin, linkDivider, linkEnd
local linkBody, titleObject, linkBegin, linkDivider, linkEnd
Строка 169: Строка 169:
text = text .. 'subst:'
text = text .. 'subst:'
elseif flags.podst then
elseif flags.podst then
text = text .. 'бухе:'
text = text .. 'подст:'
end
end
if not flags.black then
if not flags.black then
Строка 177: Строка 177:
local commentedLabel
local commentedLabel
if args.comment then
if args.comment then
-- https://massarna.com/w/T200704
-- https://phabricator.wikimedia.org/T200704
-- commentedLabel = mw.getCurrentFrame():expandTemplate({title = 'comment', args = {(args.text or name), args.comment}})
-- commentedLabel = mw.getCurrentFrame():expandTemplate({title = 'comment', args = {(args.text or name), args.comment}})
commentedLabel = '<span class="commentedText" title="' .. args.comment .. '" style="border-bottom: 1px dotted; cursor: help;">' ..
commentedLabel = '<span class="commentedText" title="' .. args.comment .. '" style="border-bottom: 1px dotted; cursor: help;">' ..
Строка 239: Строка 239:
for k, v in pairs(args) do
for k, v in pairs(args) do
if type(k) == 'number' then  -- ЦIетеханза барамаш
if type(k) == 'number' then  -- Неименованные параметры
equals_pos = v:find('=')
equals_pos = v:find('=')
if equals_pos and v:find('{{=}}') == equals_pos - 2 then
if equals_pos and v:find('{{=}}') == equals_pos - 2 then
equals_pos = nil
equals_pos = nil
end
end
if equals_pos then  -- Чулацам «=» цIетехначера йар
if equals_pos then  -- Содержащие «=» преобразуем в именованные
param = v:sub(1, equals_pos - 1)
param = v:sub(1, equals_pos - 1)
value = v:sub(equals_pos + 1)
value = v:sub(equals_pos + 1)
addPipe()
addPipe()
text = text .. param .. '=' .. value
text = text .. param .. '=' .. value
else  -- Бакъалла цIетехна йоцурш
else  -- Истинно неименованные
addPipe()
addPipe()
text = text .. v
text = text .. v
end
end
elseif not k:find('^_') then  -- ЦIетехана болу барамаш, арахьара хийцам бираш дIадахарца
elseif not k:find('^_') then  -- Именованные параметры, исключая модификаторы внешнего вида
addPipe()
addPipe()
text = text .. k .. '=' .. v
text = text .. k .. '=' .. v
Строка 268: Строка 268:
table.remove(args, 1)
table.remove(args, 1)
-- Цхьа йолу хIумнаш ишта «=» дуьхьаралера барамца
-- Вещи типа «=» в первом параметре
if not name then
if not name then
for k, v in pairs(args) do
for k, v in pairs(args) do
Строка 281: Строка 281:
local optpText
local optpText
if name then
if name then
local spanOffset = mw.ustring.find(name, '<span')  -- Кхин кеп лелор optp
local spanOffset = mw.ustring.find(name, '<span')  -- След использования шаблона optp
if spanOffset then
if spanOffset then
optpText = mw.ustring.sub(name, spanOffset)
optpText = mw.ustring.sub(name, spanOffset)
Строка 324: Строка 324:
if name then
if name then
local trimmedName = mw.text.trim(name)
local trimmedName = mw.text.trim(name)
if ce:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'subst:' then
if ru:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'subst:' then
subst = true
subst = true
name = mw.ustring.sub(trimmedName, 7)
name = mw.ustring.sub(trimmedName, 7)
end
end
if ce:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'бухе:' then
if ru:lc(mw.ustring.sub(trimmedName, 1, 6)) == 'подст:' then
podst = true
podst = true
name = mw.ustring.sub(trimmedName, 7)
name = mw.ustring.sub(trimmedName, 7)
Строка 335: Строка 335:
local currentTitle = mw.title.getCurrentTitle()
local currentTitle = mw.title.getCurrentTitle()
-- Цхьаболу охьабаитина барамца схьаоьца кепа цIе агIон цIарах
-- При опущенном первом параметре берём имя шаблона из названия страницы
if name == '' or not name then
if name == '' or not name then
local currentTitleRoot = currentTitle.rootText
local currentTitleRoot = currentTitle.rootText
if not ucFirst and
if not ucFirst and
((ce:uc(currentTitleRoot) ~= currentTitleRoot and
((ru:uc(currentTitleRoot) ~= currentTitleRoot and
-- Книга:Литературное наследство, TranslateDate
-- Книга:Литературное наследство, TranslateDate
not mw.ustring.match(currentTitleRoot, '^[А-Яа-яA-Za-z]+:?[А-ЯA-Z]')
not mw.ustring.match(currentTitleRoot, '^[А-Яа-яA-Za-z]+:?[А-ЯA-Z]')
Строка 346: Строка 346:
)
)
then
then
name = ce:lcfirst(currentTitleRoot)
name = ru:lcfirst(currentTitleRoot)
else
else
name = currentTitleRoot
name = currentTitleRoot
Строка 352: Строка 352:
end
end
-- Ишар лахьо дуьлало вай
-- Начинаем собирать код
local linkBody, titleObject, linkBegin, linkDivider, linkEnd
local linkBody, titleObject, linkBegin, linkDivider, linkEnd
Строка 424: Строка 424:
text = text .. 'subst:'
text = text .. 'subst:'
elseif podst then
elseif podst then
text = text .. 'бухе:'
text = text .. 'подст:'
end
end
if not black then
if not black then
Строка 436: Строка 436:
local commentedLabel
local commentedLabel
if comment then
if comment then
-- https://massarna.com/w/T200704
-- https://phabricator.wikimedia.org/T200704
-- commentedLabel = mw.getCurrentFrame():expandTemplate({title = 'comment', args = {(text or name), comment}})
-- commentedLabel = mw.getCurrentFrame():expandTemplate({title = 'comment', args = {(text or name), comment}})
commentedLabel = '<span class="commentedText" title="' .. comment .. '" style="border-bottom: 1px dotted; cursor: help;">' ..
commentedLabel = '<span class="commentedText" title="' .. comment .. '" style="border-bottom: 1px dotted; cursor: help;">' ..

Навигация