Модуль:СтихКолонки: различия между версиями
Grayenot (обсуждение | вклад) (Новая страница: «-- Модуль:СтихКолонки local p = {} function p.main(frame) local args = frame.args local max_columns = tonumber(args[1]) or 4 -- По умолчанию 4 колонки -- Ограничиваем максимальное количество колонок до 4 max_columns = math.min(max_columns, 4) local content = args[2] or '' -- Захватываем весь текст из второго аргумента...») |
Grayenot (обсуждение | вклад) мНет описания правки Метка: отменено |
||
Строка 8: | Строка 8: | ||
-- Ограничиваем максимальное количество колонок до 4 | -- Ограничиваем максимальное количество колонок до 4 | ||
max_columns = math.min(max_columns, 4) | max_columns = math.min(max_columns, 4) | ||
if max_columns < 1 then max_columns = 4 end -- Убеждаемся, что число колонок не меньше 1 | |||
local content = args[2] or '' -- Захватываем весь текст из второго аргумента | local content = args[2] or '' -- Захватываем весь текст из второго аргумента | ||
-- Обрабатываем содержимое, разбивая по | -- Обрабатываем содержимое, разбивая по трем или более переводам строки | ||
local parts = mw.text.split(content, 'n%s*n') | local parts = mw.text.split(content, 'n%s*n%s*n') | ||
local result = '<div class="column-container" style="column-count:' .. max_columns .. '; -webkit-column-count:' .. max_columns .. ';">' | local result = '<div class="column-container" style="column-count:' .. max_columns .. '; -webkit-column-count:' .. max_columns .. ';">' | ||
for i, part in ipairs(parts) do | for i, part in ipairs(parts) do | ||
part = mw.text.trim(part) | part = mw.text.trim(part) | ||
result = result .. '<div class="column-break">' .. part .. '</div>' | -- Если часть не пуста, добавляем её | ||
if part ~= '' then | |||
-- Добавляем стиль break-inside: avoid | |||
result = result .. '<div class="column-break" style="break-inside: avoid; page-break-inside: avoid; -webkit-column-break-inside: avoid;">' .. part .. '</div>' | |||
end | |||
end | end | ||
Версия от 16:19, 2 ноября 2024
Для документации этого модуля может быть создана страница Модуль:СтихКолонки/doc
-- Модуль:СтихКолонки local p = {} function p.main(frame) local args = frame.args local max_columns = tonumber(args[1]) or 4 -- По умолчанию 4 колонки -- Ограничиваем максимальное количество колонок до 4 max_columns = math.min(max_columns, 4) if max_columns < 1 then max_columns = 4 end -- Убеждаемся, что число колонок не меньше 1 local content = args[2] or '' -- Захватываем весь текст из второго аргумента -- Обрабатываем содержимое, разбивая по трем или более переводам строки local parts = mw.text.split(content, 'n%s*n%s*n') local result = '<div class="column-container" style="column-count:' .. max_columns .. '; -webkit-column-count:' .. max_columns .. ';">' for i, part in ipairs(parts) do part = mw.text.trim(part) -- Если часть не пуста, добавляем её if part ~= '' then -- Добавляем стиль break-inside: avoid result = result .. '<div class="column-break" style="break-inside: avoid; page-break-inside: avoid; -webkit-column-break-inside: avoid;">' .. part .. '</div>' end end result = result .. '</div>' return result end return p