3675
правок
Mansur700 (обсуждение | вклад) (Керла агӀо: «local getArgs = require('Module:Arguments').getArgs local ce = mw.language.new('ce') local p = {} -- Лело йеза хIара гуран чура цхьа йолу...») |
Mansur700 (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local | local ru = mw.language.new('ru') | ||
local p = {} | local p = {} | ||
-- | -- Используется для того, чтобы можно было удалять элементы из таблицы | ||
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 | 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 | 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() | ||
-- | -- При опущенном первом параметре берём имя шаблона из названия страницы | ||
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 | ||
(( | ((ru:uc(currentTitleRoot) ~= currentTitleRoot and | ||
-- | -- Книга:Литературное наследство, 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 = | 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:// | -- 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 -- | 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 -- | 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 -- | else -- Истинно неименованные | ||
addPipe() | addPipe() | ||
text = text .. v | text = text .. v | ||
end | end | ||
elseif not k:find('^_') then -- | 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) | ||
-- | -- Вещи типа «=» в первом параметре | ||
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') -- | 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 | 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 | 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() | ||
-- | -- При опущенном первом параметре берём имя шаблона из названия страницы | ||
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 | ||
(( | ((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 = | 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:// | -- 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;">' .. |