<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ADecadeMetaCat</id>
	<title>Модуль:DecadeMetaCat - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ADecadeMetaCat"/>
	<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:DecadeMetaCat&amp;action=history"/>
	<updated>2026-05-05T22:53:05Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:DecadeMetaCat&amp;diff=13773&amp;oldid=prev</id>
		<title>Dzmuh: Новая страница: «---*- mode: lua; coding: utf-8; -*-  local p = {}  -- переменные local dec -- десятилетие, положительное число local BC   -- 0 == н.э. 1 == до н.э. local templ -- строка-шаблон вида 'Мир в %s-е годы%s' local title = mw.title.getCurrentTitle().text  -- опции local dec_min = -40000 -- 0 == только н.э. local dec_max = 2100 -- XXI local range = 5  -- экспортируемые...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:DecadeMetaCat&amp;diff=13773&amp;oldid=prev"/>
		<updated>2024-04-17T17:49:58Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «---*- mode: lua; coding: utf-8; -*-  local p = {}  -- переменные local dec -- десятилетие, положительное число local BC   -- 0 == н.э. 1 == до н.э. local templ -- строка-шаблон вида &amp;#039;Мир в %s-е годы%s&amp;#039; local title = mw.title.getCurrentTitle().text  -- опции local dec_min = -40000 -- 0 == только н.э. local dec_max = 2100 -- XXI local range = 5  -- экспортируемые...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;---*- mode: lua; coding: utf-8; -*-&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- переменные&lt;br /&gt;
local dec -- десятилетие, положительное число&lt;br /&gt;
local BC   -- 0 == н.э. 1 == до н.э.&lt;br /&gt;
local templ -- строка-шаблон вида 'Мир в %s-е годы%s'&lt;br /&gt;
local title = mw.title.getCurrentTitle().text&lt;br /&gt;
&lt;br /&gt;
-- опции&lt;br /&gt;
local dec_min = -40000 -- 0 == только н.э.&lt;br /&gt;
local dec_max = 2100 -- XXI&lt;br /&gt;
local range = 5&lt;br /&gt;
&lt;br /&gt;
-- экспортируемые функции&lt;br /&gt;
local getArgs = require('Module:Arguments').getArgs&lt;br /&gt;
local sparseIpairs = require('Module:TableTools').sparseIpairs&lt;br /&gt;
--local toroman = require('Module:Math').Roman&lt;br /&gt;
local toroman = require('Module:Roman').convert&lt;br /&gt;
local gsub = mw.ustring.gsub&lt;br /&gt;
&lt;br /&gt;
local function get_templ(s)&lt;br /&gt;
    -- формируем строку-шаблон вида:&lt;br /&gt;
    -- 'Мир в 90-е годы до н. э.' -&amp;gt; 'Мир в %s-е годы%s'&lt;br /&gt;
    -- определяем BC&lt;br /&gt;
    local t&lt;br /&gt;
    t, BC = gsub(s, '[0-9]*0(-[ех] год[ыоа][вх]?) до н. э.', '%%s%1%%s') -- годы/годов/годах&lt;br /&gt;
    local n = BC&lt;br /&gt;
    if BC ~= 1 then&lt;br /&gt;
        t, n = gsub(s, '[0-9]*0(-[ех] год[ыоа][вх]?)', '%%s%1%%s')&lt;br /&gt;
    end&lt;br /&gt;
    if n ~= 1 then&lt;br /&gt;
        -- не найдено или найдено больше одного&lt;br /&gt;
        error('десятилетие не найдено')&lt;br /&gt;
    end&lt;br /&gt;
    templ = t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_dec(t)&lt;br /&gt;
    _, _, dec = mw.ustring.find(t, '([0-9]*0)-[ех] год')&lt;br /&gt;
    if not dec then error('десятилетие не найдено') end&lt;br /&gt;
    dec = tonumber(dec)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function format(d, wiki)&lt;br /&gt;
    local bcs, t&lt;br /&gt;
    if d &amp;lt; 0 then&lt;br /&gt;
        d = -d-10&lt;br /&gt;
        bcs = ' до н. э.'&lt;br /&gt;
        --t = tostring(d)..' до н. э.'&lt;br /&gt;
        t = '-'..d&lt;br /&gt;
    else&lt;br /&gt;
        bcs = ''&lt;br /&gt;
        t = d&lt;br /&gt;
    end&lt;br /&gt;
    local s&lt;br /&gt;
    if wiki then&lt;br /&gt;
        s = string.format(templ, d, bcs)&lt;br /&gt;
        s = string.format('[[:К:%s|%s]]', s, t)&lt;br /&gt;
    else&lt;br /&gt;
        s = t&lt;br /&gt;
    end&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function navbox()&lt;br /&gt;
    local d&lt;br /&gt;
    d = dec&lt;br /&gt;
    if BC == 1 then&lt;br /&gt;
        -- 0-е годы до н.э. d=-10, 10-е до н.э. d=-20, 20-е до н.э. d=-30 и т.д.&lt;br /&gt;
        d = -dec-10&lt;br /&gt;
    end&lt;br /&gt;
    local wt = mw.html.create('table'):addClass('standard'):attr('align', 'center')&lt;br /&gt;
    local row = wt:tag('tr')&lt;br /&gt;
    local dstart&lt;br /&gt;
    if dec_min &amp;lt; 0 then&lt;br /&gt;
        dstart = math.max(dec_min-10, d - range*10)&lt;br /&gt;
    else&lt;br /&gt;
        dstart = math.max(dec_min, d - range*10)&lt;br /&gt;
    end&lt;br /&gt;
    local dend = math.min(dec_max, d + range*10) -- FIXME: до н.э.&lt;br /&gt;
    for i = dstart, dend, 10 do&lt;br /&gt;
        if i == 0 and i ~= dstart then -- разд. до н.э./н.э.&lt;br /&gt;
            row:tag('th'):wikitext('')&lt;br /&gt;
        end&lt;br /&gt;
        if i == d then&lt;br /&gt;
            row:tag('th'):wikitext(format(i, false))&lt;br /&gt;
        else&lt;br /&gt;
            row:tag('td'):wikitext(format(i, true))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return tostring(wt)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function do_expand(s)&lt;br /&gt;
-- &amp;lt;десятилетие&amp;gt; - десятилетие числом (без окончания -е/-х)&lt;br /&gt;
-- &amp;lt;ключ&amp;gt; - ключ сортировки, н.э. - номер года,&lt;br /&gt;
-- до н.э. - отрицательное число начиная с -10000 (-10000 == 0-е годы до н.э. -9990 == 10-е годы до н.э. -9980 == 20-е годы до н.э. и т.д.)&lt;br /&gt;
-- &amp;lt;век&amp;gt; - век римскими цифрами&lt;br /&gt;
    local c = toroman(math.floor(dec/100)+1) -- век&lt;br /&gt;
    -- в/во&lt;br /&gt;
    if c == 'II' then&lt;br /&gt;
        s = gsub(s, ' в &amp;lt;век&amp;gt;', ' во &amp;lt;век&amp;gt;')&lt;br /&gt;
    end&lt;br /&gt;
    if BC == 1 then&lt;br /&gt;
        s = gsub(s, '&amp;lt;десятилетие&amp;gt;(-[ех] год[ыоа][вх]?)', dec..'%1 до н. э.') -- годы/годов/годах&lt;br /&gt;
        s = gsub(s, '&amp;lt;ключ&amp;gt;', dec-10000) -- ?&lt;br /&gt;
        s = gsub(s, '&amp;lt;век&amp;gt; (век[еа]?)', c..' %1 до н. э.')&lt;br /&gt;
    else&lt;br /&gt;
        s = gsub(s, '&amp;lt;десятилетие&amp;gt;', dec)&lt;br /&gt;
        s = gsub(s, '&amp;lt;ключ&amp;gt;', dec)&lt;br /&gt;
        s = gsub(s, '&amp;lt;век&amp;gt;', c)&lt;br /&gt;
    end&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cats(args)&lt;br /&gt;
    local s, t&lt;br /&gt;
    local ret = ''&lt;br /&gt;
    for _, s in sparseIpairs(args) do&lt;br /&gt;
        t = mw.text.split(s, '!', true)&lt;br /&gt;
        if t[2] and t[2] ~= '' then&lt;br /&gt;
            ret = ret .. string.format('[[К:%s|%s]]', t[1], t[2])&lt;br /&gt;
        else&lt;br /&gt;
            ret = ret .. string.format('[[К:%s]]', t[1])&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return do_expand(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = getArgs(frame)&lt;br /&gt;
    title = args['title'] or title&lt;br /&gt;
    -- разбор аргументов&lt;br /&gt;
    range = tonumber(args['range'] or range)&lt;br /&gt;
    dec_min = tonumber(args['min'] or dec_min)&lt;br /&gt;
    dec_max = tonumber(args['max'] or dec_max)&lt;br /&gt;
    -- нахождение текушего года&lt;br /&gt;
    get_dec(title)&lt;br /&gt;
    -- создание шаблона-строки&lt;br /&gt;
    get_templ(title)&lt;br /&gt;
    -- создание навбокса и категорий&lt;br /&gt;
    return navbox(title) .. cats(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.expand(frame)&lt;br /&gt;
    local args = getArgs(frame)&lt;br /&gt;
    title = args['title'] or title&lt;br /&gt;
    get_dec(title)&lt;br /&gt;
    BC = mw.ustring.find(title, '[0-9]*0-[ех] год[ыоа][вх]? до н%. э%.')&lt;br /&gt;
    if BC then&lt;br /&gt;
        BC = 1&lt;br /&gt;
    else&lt;br /&gt;
        BC = 0&lt;br /&gt;
    end&lt;br /&gt;
    return do_expand(args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
</feed>