| Строка 33: |
Строка 33: |
| end | | end |
|
| |
|
| function p.render(frame) | | function p.role(frame) |
| local args = frame:getParent().args | | local args = frame:getParent().args |
| -- Поддерживаем как позиционный аргумент 1, так и именованный title | | -- Поддерживаем как позиционный аргумент 1, так и именованный title |
| Строка 86: |
Строка 86: |
| elseif lowerVal == "нет" or lowerVal == "no" or lowerVal == "false" then | | elseif lowerVal == "нет" or lowerVal == "no" or lowerVal == "false" then |
| displayVal = '<span style="color: red;">✖ Нет</span>' | | displayVal = '<span style="color: red;">✖ Нет</span>' |
| end
| |
|
| |
| -- Добавляем строку в таблицу
| |
| root:tag('tr')
| |
| :tag('td'):wikitext(k):done()
| |
| :tag('td'):wikitext(displayVal):done()
| |
| end
| |
|
| |
| return tostring(root)
| |
| end
| |
|
| |
| -- Функция для вывода со стилем роли и шаблонами ячеек
| |
| function p.role(frame)
| |
| local args = frame:getParent().args
| |
| local title = args[1] or args.title or "Информация"
| |
|
| |
| local root = mw.html.create('table')
| |
| :addClass('wikitable')
| |
|
| |
| -- Заголовок таблицы с вашим стилем и точкой
| |
| root:tag('tr')
| |
| :tag('th')
| |
| :attr('colspan', '2')
| |
| :css('background-color', 'rgba(0, 0, 255, 0.12)')
| |
| :wikitext("'''" .. title .. ".'''")
| |
|
| |
| -- Собираем все ключи, кроме первого (заголовка)
| |
| local keys = {}
| |
| for k, _ in pairs(args) do
| |
| if k ~= 1 and k ~= "1" and k ~= "title" then
| |
| table.insert(keys, k)
| |
| end
| |
| end
| |
|
| |
| -- Сортировка по заданному порядку
| |
| table.sort(keys, function(a, b)
| |
| local posA = orderMap[a]
| |
| local posB = orderMap[b]
| |
|
| |
| if posA and posB then
| |
| return posA < posB
| |
| elseif posA then
| |
| return true
| |
| elseif posB then
| |
| return false
| |
| else
| |
| return tostring(a) < tostring(b)
| |
| end
| |
| end)
| |
|
| |
| -- Перебираем каждый параметр и формируем строки таблицы
| |
| for _, k in ipairs(keys) do
| |
| local rawVal = args[k]
| |
| local trimmedVal = mw.text.trim(rawVal)
| |
| local lowerVal = trimmedVal:lower()
| |
| local displayVal = trimmedVal
| |
|
| |
| -- Вызов шаблонов через frame:expandTemplate
| |
| if lowerVal == "да" or lowerVal == "yes" or lowerVal == "true" then
| |
| displayVal = frame:expandTemplate{ title = 'Шаблон:Ячейка/Да' }
| |
| elseif lowerVal == "нет" or lowerVal == "no" or lowerVal == "false" then
| |
| displayVal = frame:expandTemplate{ title = 'Шаблон:Ячейка/Нет' }
| |
| end | | end |
| | | |