Модуль:СтихКолонки: различия между версиями
Grayenot (обсуждение | вклад) мНет описания правки |
Grayenot (обсуждение | вклад) мНет описания правки |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
function p.main(frame) | function p.main(frame) | ||
local args = frame.args | |||
local parentArgs = frame:getParent().args | local parentArgs = frame:getParent().args | ||
local stanzas = mw.text.split(content, '% | local allArgs = {} | ||
local result = '<div class="column-container" style=" | 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 | for i, stanza in ipairs(stanzas) do | ||
stanza = mw.text.trim(stanza) | stanza = mw.text.trim(stanza) | ||
result = result .. '<div | -- Обрабатываем вики-разметку для каждой строфы отдельно | ||
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