Модуль:СтихКолонки: различия между версиями
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 (обсуждение | вклад) мНет описания правки |
||
(не показано 16 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
function p.main(frame) | function p.main(frame) | ||
local args = frame.args | local args = frame.args | ||
local | local parentArgs = frame:getParent().args | ||
local allArgs = {} | |||
for k, v in pairs(parentArgs) do | |||
allArgs[k] = v | |||
end | |||
for k, v in pairs(args) do | |||
allArgs[k] = v | |||
end | |||
local content = | local content = allArgs[1] or '' | ||
local max_columns = tonumber(allArgs['колонок']) or 2 | |||
-- | -- Разделяем текст на строфы по двойному переносу строки | ||
local | local stanzas = mw.text.split(content, 'nn') | ||
for i, | -- Формируем стиль для контейнера колонок с явным указанием всех префиксов | ||
local column_style = string.format([[ | |||
result = result .. '<div | -webkit-column-count: %d; | ||
-moz-column-count: %d; | |||
column-count: %d; | |||
column-gap: 1em; | |||
]], max_columns, max_columns, max_columns) | |||
-- Начало контейнера | |||
local result = '<div class="column-container" style="' .. column_style .. '">' | |||
for i, stanza in ipairs(stanzas) do | |||
stanza = mw.text.trim(stanza) | |||
-- Обрабатываем вики-разметку для каждой строфы отдельно | |||
stanza = frame:preprocess(stanza) | |||
result = result .. '<div>' .. stanza .. '</div>' | |||
end | end | ||
Текущая версия от 19:25, 2 ноября 2024
Для документации этого модуля может быть создана страница Модуль:СтихКолонки/doc
local p = {} function p.main(frame) local args = frame.args local parentArgs = frame:getParent().args local allArgs = {} for k, v in pairs(parentArgs) do allArgs[k] = v end for k, v in pairs(args) do allArgs[k] = v end local content = allArgs[1] or '' local max_columns = tonumber(allArgs['колонок']) or 2 -- Разделяем текст на строфы по двойному переносу строки local stanzas = mw.text.split(content, 'nn') -- Формируем стиль для контейнера колонок с явным указанием всех префиксов local column_style = string.format([[ -webkit-column-count: %d; -moz-column-count: %d; column-count: %d; column-gap: 1em; ]], max_columns, max_columns, max_columns) -- Начало контейнера local result = '<div class="column-container" style="' .. column_style .. '">' for i, stanza in ipairs(stanzas) do stanza = mw.text.trim(stanza) -- Обрабатываем вики-разметку для каждой строфы отдельно stanza = frame:preprocess(stanza) result = result .. '<div>' .. stanza .. '</div>' end result = result .. '</div>' return result end return p