Interested Article - FormatRow
gaynor
- 2021-07-06
- 1
Этот модуль относится к
критическим
. У него очень много включений или он используется с подстановкой. Из-за опасности вандализма или ошибочного редактирования он был защищён.
|
Модуль обработки строк.
Функции
AsRows
Функция принимает неограниченное количество неименованных параметров вызывающего шаблона
{{
Чередующиеся строки таблицы
}}
считая их строками таблицы.
Переданные параметры выводятся последовательно с новой строки и перед каждой строкой добавляются символы вики-разметки начала строки таблицы
|-
.
Шаблон вызова:
{{#invoke:FormatRow|AsRows}}
Дополнительные именованные параметры задают стиль строки:
-
odd=
илинс=
— CSS стиль для нечётных строк -
even=
иличс=
— CSS стиль для чётных строк -
each=
иликс=
— дополнительный CSS стиль для каждой строки
Пример
Код | Результат | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{| class="wikitable" ! Место !! Результат {{#invoke:FormatRow|AsRows|чс=background:#CCCCFF|кс=text-align:center | {{!}} Первое {{!!}} 100 | {{!}} Второе {{!!}} 95 | <!-- пусто! --> | {{!}} Третье {{!!}} 87 | <!-- пусто! --> | {{!}} Четвёртое {{!!}} 65 | {{!}} Пятое {{!!}} 58 }} |} |
|
local p = {}
--[[
Функция выводит каждый неименованный параметр как строку таблицы в вики-разметке
Именованные параметры:
odd - стиль для нечётных строк
even - стиль для чётных строк
each - дополнительный стиль для каждой строки
]]
function p.AsRows(frame)
local args = frame.args;
if args[1] == nil then
args = frame:getParent().args;
end
local params = {
even = args['even'] or args['нс'],
odd = args['odd'] or args['чс'],
each = args['each'] or args['кс']
}
local rows = {}
local num = 1;
local cnt = 1;
value = args[num];
while value ~= nil do
value = mw.text.trim(value)
if value ~= '' then
local style = '';
if (cnt % 2) == 0 then
style = params.even or '';
else
style = params.odd or '';
end
if params.each ~= nil then
style = params.each .. '; ' .. style;
end
local row = '|-'
if style ~= '' then
row = row .. ' style ="' .. style .. '"';
end
row = row .. '\n';
table.insert(rows, row .. value);
cnt = cnt+1
end
num = num+1;
value = args[num]
end
return table.concat(rows, '\n');
end
return p
gaynor
- 2021-07-06
- 1