Модуль:В этот день: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
м (concat)
м (deferred)
 
Строка 39: Строка 39:
 
local day = frame.args.day or frame.args ['день'] or frame.args [1]
 
local day = frame.args.day or frame.args ['день'] or frame.args [1]
 
local intro = frame.args.format or frame.args ['формат'] or frame.args [2]
 
local intro = frame.args.format or frame.args ['формат'] or frame.args [2]
 +
local deferred = frame.args.deferred or frame.args [3]
 
for _, event in ipairs (events) do
 
for _, event in ipairs (events) do
 
local heading, genitive = unpack (event)
 
local heading, genitive = unpack (event)
Строка 44: Строка 45:
 
day = day,
 
day = day,
 
intro = format (intro, heading),
 
intro = format (intro, heading),
event = genitive
+
event = genitive,
 +
deferred = deferred
 
} }
 
} }
 
end
 
end

Текущая версия от 08:40, 28 августа 2025

события

Код Вывод
{{#invoke:В этот день|события|1 декабря|format=<h2 style="margin-top: 0">%s</h2>|deferred=yes}}

категория

Код Вывод
{{#invoke:В этот день|категория|1 декабря}}

декабрь


local events = {
	{ 'Подписаны договоры', 'подписания договора' },
	{ 'Вступили в силу договоры', 'вступления договора в силу' },
	{ 'Окончилось действие договоров', 'окончания действия договора' },
	{ 'Приняты законы', 'принятия закона' },
	{ 'Подписаны законы', 'подписания закона' },
	{ 'Опубликованы законы', 'публикации закона' },
	{ 'Утратили силу законы', 'утраты законом силы' },
	{ 'Окончилось действие законов', 'окончания действия закона' }
}

local concat = table.concat
local lang, match, format = mw.getContentLanguage(), mw.ustring.match, mw.ustring.format

local months = (
	function ()
		local months = {}
		for month = 1, 12 do
			local date = '2000-' .. tostring (month) .. '-01'
			months [lang:formatDate ('xg', date)] = lang:formatDate ('F', date)
		end
		return months
	end
)()

local function month (date)
	return months [match (date, '[а-яё]+') or '']
end

local p = {}

p ['категория'] = function (frame)
	local day = frame.args.day or frame.args ['день'] or frame.args [1]
	return month (day) or 'Дни'
end

p ['события'] = function (frame)
	local sections = {}
	local day = frame.args.day or frame.args ['день'] or frame.args [1]
	local intro = frame.args.format or frame.args ['формат'] or frame.args [2]
	local deferred = frame.args.deferred or frame.args [3]
	for _, event in ipairs (events) do
		local heading, genitive = unpack (event)
		sections [#sections + 1] = frame:expandTemplate { title = 'В этот день', args = {
			day = day,
			intro = format (intro, heading),
			event = genitive,
			deferred = deferred
		} }
	end
	return concat (sections)
end

return p