<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ADates%2F%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0</id>
	<title>Модуль:Dates/песочница - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ADates%2F%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0"/>
	<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Dates/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;action=history"/>
	<updated>2026-04-13T13:09:29Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Dates/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4575&amp;oldid=prev</id>
		<title>Импортёр: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Dates/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4575&amp;oldid=prev"/>
		<updated>2024-05-01T10:06:35Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 13:06, 1 мая 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Импортёр</name></author>
	</entry>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Dates/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4574&amp;oldid=prev</id>
		<title>ru&gt;Andras: Новая страница: «--  В этом модуле собраны функции, связанные с работой с датами.  local monthg = {&#039;января&#039;, &#039;февраля&#039;, &#039;марта&#039;, &#039;апреля&#039;, &#039;мая&#039;, &#039;июня&#039;,     &#039;июля&#039;, &#039;августа&#039;, &quot;сентября&quot;, &quot;октября&quot;, &quot;ноября&quot;, &quot;декабря&quot;}  local monthd = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}  local function DecodeDate(d)-- Ч, М, Г, СЧ, СМ, СГ, хвос...»</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Dates/%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=4574&amp;oldid=prev"/>
		<updated>2023-06-04T21:49:19Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «--&lt;a href=&quot;/index.php?title=%D0%92_%D1%8D%D1%82%D0%BE%D0%BC_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D0%BD%D1%8B_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8,_%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BE%D0%B9_%D1%81_%D0%B4%D0%B0%D1%82%D0%B0%D0%BC%D0%B8.&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;В этом модуле собраны функции, связанные с работой с датами. (страница не существует)&quot;&gt;В этом модуле собраны функции, связанные с работой с датами. &lt;/a&gt; local monthg = {&amp;#039;января&amp;#039;, &amp;#039;февраля&amp;#039;, &amp;#039;марта&amp;#039;, &amp;#039;апреля&amp;#039;, &amp;#039;мая&amp;#039;, &amp;#039;июня&amp;#039;,     &amp;#039;июля&amp;#039;, &amp;#039;августа&amp;#039;, &amp;quot;сентября&amp;quot;, &amp;quot;октября&amp;quot;, &amp;quot;ноября&amp;quot;, &amp;quot;декабря&amp;quot;}  local monthd = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}  local function DecodeDate(d)-- Ч, М, Г, СЧ, СМ, СГ, хвос...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
 В этом модуле собраны функции, связанные с работой с датами.&lt;br /&gt;
]]&lt;br /&gt;
local monthg = {&amp;#039;января&amp;#039;, &amp;#039;февраля&amp;#039;, &amp;#039;марта&amp;#039;, &amp;#039;апреля&amp;#039;, &amp;#039;мая&amp;#039;, &amp;#039;июня&amp;#039;,&lt;br /&gt;
    &amp;#039;июля&amp;#039;, &amp;#039;августа&amp;#039;, &amp;quot;сентября&amp;quot;, &amp;quot;октября&amp;quot;, &amp;quot;ноября&amp;quot;, &amp;quot;декабря&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
local monthd = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}&lt;br /&gt;
&lt;br /&gt;
local function DecodeDate(d)-- Ч, М, Г, СЧ, СМ, СГ, хвост&lt;br /&gt;
    --дата: &amp;quot;%-?%d+&amp;quot;=год, &amp;quot;%d+%.%d+&amp;quot;=число месяца, &amp;quot;%d+%.%d+%.%-?%d+&amp;quot;=ЧМГ,&lt;br /&gt;
    -- потом в скобках м.б. переопределено для старого стиля начиная с числа&lt;br /&gt;
    local nd=d:match(&amp;quot;^[%d.-]*&amp;quot;);&lt;br /&gt;
    local od=d:match(&amp;quot;^[%d.-]*%s*%(%s*([%d.-]*)%s*%)&amp;quot;);&lt;br /&gt;
    local tail = d:match(&amp;quot;^[%d.-]+%s*%(%s*[%d.-]+%s*%)%s*(%S.*)&amp;quot;) or d:match(&amp;quot;^[%d.-]+%s*([^%s%d].*)&amp;quot;);&lt;br /&gt;
    if nd:match(&amp;#039;^%-?%d+$&amp;#039; ) then&lt;br /&gt;
        return nil, nil, tonumber(nd), nil, nil, od and tonumber(od:match(&amp;quot;%-?%d+$&amp;quot;)),tail&lt;br /&gt;
    else&lt;br /&gt;
        local j,m,y=nd:match(&amp;quot;^(%d+)%.(%d+)%.?(%-?%d*)&amp;quot;);&lt;br /&gt;
        if j then&lt;br /&gt;
            if od then&lt;br /&gt;
                local oj, om, oy = od:match(&amp;quot;^(%d+)%.?(%d*)%.?(%-?%d*)&amp;quot;);&lt;br /&gt;
                return j and tonumber(j),&lt;br /&gt;
                       m and tonumber(m),&lt;br /&gt;
                       y&amp;gt;&amp;#039;&amp;#039; and tonumber(y) or nil,&lt;br /&gt;
                      oj and tonumber(oj),&lt;br /&gt;
                      om&amp;gt;&amp;#039;&amp;#039; and tonumber(om) or nil,&lt;br /&gt;
                      oy&amp;gt;&amp;#039;&amp;#039; and tonumber(oy) or nil,&lt;br /&gt;
                      tail&lt;br /&gt;
            end&lt;br /&gt;
            return j and tonumber(j), m and tonumber(m), y&amp;gt;&amp;#039;&amp;#039; and tonumber(y) or nil, nil, nil, nil, tail&lt;br /&gt;
        else return nil&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Diffy(d1,m1,y1,d0,m0,y0)--аналог Персона/Дата/Прошло лет&lt;br /&gt;
    return y1-y0 - ( y1*y0&amp;lt;=0 and 1 or 0 ) - ( (m1&amp;lt;m0 or m1==m0 and d1&amp;lt;d0) and 1 or 0 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Year0(y,t)-- аналог Год0&lt;br /&gt;
    if y&amp;gt;0 then return table.concat{&lt;br /&gt;
        &amp;#039;[[&amp;#039;, tostring(y), &amp;#039; год|&amp;#039;, t and tostring(y)..&amp;#039;&amp;amp;nbsp;&amp;#039;..t or tostring(y), &amp;#039;]]&amp;#039;&lt;br /&gt;
    } else return table.concat{&lt;br /&gt;
        &amp;#039;[[&amp;#039;, tostring(-y), &amp;#039; год до н. э.|&amp;#039;, &lt;br /&gt;
        t and tostring(-y)..&amp;#039;&amp;amp;nbsp;&amp;#039;..t or tostring(-y),&lt;br /&gt;
        &amp;#039;&amp;amp;nbsp;до&amp;amp;nbsp;н.&amp;amp;nbsp;э.]]&amp;#039;&lt;br /&gt;
    }&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function FormDate(j,m,y,oj,om,oy,mo)-- ~ Персона/Дата/Logic 4&lt;br /&gt;
    if j then&lt;br /&gt;
        if not m then return &amp;quot;&amp;#039;&amp;#039;формат неверен&amp;#039;&amp;#039;&amp;quot; end&lt;br /&gt;
        if y then return&lt;br /&gt;
         string.format(&lt;br /&gt;
            &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;%04i-%02i-%02i&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
            table.concat(&lt;br /&gt;
                oj and (&lt;br /&gt;
                    om and (&lt;br /&gt;
                        oy and {-- ДД ММММ ГГГГ ([[ДД ММММ]] [[ГГГГ]])&lt;br /&gt;
                            oj,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[om],&amp;#039;&amp;amp;nbsp;&amp;#039;,oy,&lt;br /&gt;
                            &amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;([[&amp;#039;,&lt;br /&gt;
                            j, &amp;#039; &amp;#039;, monthg[m],&amp;#039;]] &amp;#039;,Year0(y),&amp;#039;)&amp;#039;&lt;br /&gt;
                        } or {-- ДД ММММ ([[ДД ММММ]]) [[ГГГГ]]&lt;br /&gt;
                            oj,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[om],&amp;#039; ([[&amp;#039;,j,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[m],&amp;#039;]]) &amp;#039;,Year0(y)&lt;br /&gt;
                        }&lt;br /&gt;
                    ) or {-- ДД [[ДД ММММ|(ДД) ММММ]] [[ГГГГ]]&lt;br /&gt;
                        oj,&amp;#039;&amp;amp;nbsp;[[&amp;#039;,j,&amp;#039; &amp;#039;,monthg[m],&amp;#039;|&amp;#039;,&amp;#039;(&amp;#039;,j,&amp;#039;)&amp;amp;nbsp;&amp;#039;,monthg[m],&amp;#039;]] &amp;#039;,Year0(y)&lt;br /&gt;
                    }&lt;br /&gt;
                ) or {&amp;#039;[[&amp;#039;,j,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[m],&amp;#039;]]&amp;amp;nbsp;&amp;#039;,Year0(y)}&lt;br /&gt;
            ),--/table.concat&lt;br /&gt;
            ({[&amp;#039;Рождения&amp;#039;]=&amp;#039;bday&amp;#039;,[&amp;#039;Смерти&amp;#039;]=&amp;#039;dday&amp;#039;})[mo] or &amp;#039;&amp;#039;,&lt;br /&gt;
            y,m,j&lt;br /&gt;
         )--/string.format&lt;br /&gt;
        else return&lt;br /&gt;
            &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. table.concat(&lt;br /&gt;
                oj and (&lt;br /&gt;
                    om and {-- ДД ММММ ([[ДД ММММ]])&lt;br /&gt;
                            oj,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[om],&amp;#039; ([[&amp;#039;,j,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[m],&amp;#039;]])&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
                    } or {-- ДД [[ДД ММММ|(ДД) ММММ]]&lt;br /&gt;
                        oj,&amp;#039;&amp;amp;nbsp;[[&amp;#039;,j,&amp;#039; &amp;#039;,monthg[m],&amp;#039;|&amp;#039;,&amp;#039;(&amp;#039;,j,&amp;#039;)&amp;amp;nbsp;&amp;#039;,monthg[m],&amp;#039;]]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
                    }&lt;br /&gt;
                ) or {&amp;#039;[[&amp;#039;,j,&amp;#039;&amp;amp;nbsp;&amp;#039;,monthg[m],&amp;#039;]]&amp;lt;/span&amp;gt;&amp;#039;}&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return y and string.format(&lt;br /&gt;
            &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;%s&amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;bday&amp;quot;&amp;gt;%04i&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
            Year0(y,&amp;#039;год&amp;#039;),y) or &amp;quot;&amp;#039;&amp;#039;формат неверен&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function GetDate(D)--dd.mm.-?yyyy или -?yyyy-mm-dd в три переменных d,m,y&lt;br /&gt;
    local d,m,y = d:match(&amp;#039;^%s*(%d%d?)[/.]([01]?%d)[/.](%-?%d+)&amp;#039;)&lt;br /&gt;
    if not d then y,m,d = D:match(&amp;#039;^%s*(%-?%d+)[-\\]0*(1?%d)[-\\]0*(%d+)&amp;#039;) end&lt;br /&gt;
    return tonumber(d),tonumber(m),tonumber(y)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Cmp(a,b)--Сравнивает две даты, результат соответственно -1, 0 или 1 &lt;br /&gt;
    local d1,m1,y1 = GetDate(a)&lt;br /&gt;
    local d2,m2,y2 = GetDate(b)&lt;br /&gt;
    return d1 and d2 and (--nil, если формат не опознан&lt;br /&gt;
        y1==y2 and (&lt;br /&gt;
            m1==m2 and (&lt;br /&gt;
                d1==d2 and 0 or d1&amp;lt;d2 and -1 or 1&lt;br /&gt;
            ) or m1&amp;lt;m2 and -1 or 1&lt;br /&gt;
        ) or y1&amp;lt;y2 and -1 or 1&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Yyyymmdd(r)--Переводит русскую дату в YYYY,MM,DD&lt;br /&gt;
    local d, m, y, M = mw.ustring.match(r, &amp;quot;^%s*(%d%d?)%s+([а-яА-Я]+)%s+(%d+)&amp;quot;)&lt;br /&gt;
    if not m then return nil end&lt;br /&gt;
    m = mw.ustring.lower(m)&lt;br /&gt;
&lt;br /&gt;
    --тупо перебор&lt;br /&gt;
    for i = 1, 12 do&lt;br /&gt;
    	if m == monthg[i] then&lt;br /&gt;
    		M = i&lt;br /&gt;
    		break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    if not M then&lt;br /&gt;
    	return nil&lt;br /&gt;
	end&lt;br /&gt;
    return tonumber(y), M, tonumber(d)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
p = {&lt;br /&gt;
&lt;br /&gt;
ifdate=function(f)-- Для шаблона &amp;quot;Если дата&amp;quot;, имитирует старое поведение&lt;br /&gt;
 -- Аргументы передаются шаблону &lt;br /&gt;
 return f:getParent().args[ mw.ustring.match(frame.args[1],&amp;quot;^[ %d.%-−%()]*$&amp;quot;) and 2 or 3 ]&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
DecodeDate = DecodeDate;&lt;br /&gt;
Diffy = Diffy;&lt;br /&gt;
Year0 = Year0;&lt;br /&gt;
GetDate = GetDate;&lt;br /&gt;
Cmp = Cmp;&lt;br /&gt;
Yyyymmdd = Yyyymmdd;&lt;br /&gt;
&lt;br /&gt;
diffy = function(f)-- принимает параметры #invoke в виде двух строк-дат&lt;br /&gt;
    local d1,m1,y1=DecodeDate(f.args[1]);&lt;br /&gt;
    local d0,m0,y0=DecodeDate(f.args[2])&lt;br /&gt;
    return Diffy(d1,m1,y1,d0,m0,y0)&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
monthg=function(f) return monthg[ f.args[1] or f:getParent().args[1] ] end;--realmonth&lt;br /&gt;
&lt;br /&gt;
persdate=function(f)-- Для шаблона Персона/Дата;{{#invoke:dates|persdate|nocat={{NAMESPACE}}}}&lt;br /&gt;
 local frame=f:getParent();&lt;br /&gt;
 local catpref,mo,d,d2={[&amp;#039;Рождения&amp;#039;]=&amp;#039;Родившиеся&amp;#039;,[&amp;#039;Смерти&amp;#039;]=&amp;#039;Умершие&amp;#039;}, frame.args[1],frame.args[2],frame.args[3]&lt;br /&gt;
 local cat, j,m,y,oj,om,oy,tail, j2,m2,y2, age = &amp;#039;&amp;#039;&lt;br /&gt;
 if d then&lt;br /&gt;
     j,m,y,oj,om,oy,tail=DecodeDate(d:gsub(&amp;#039;−&amp;#039;,&amp;#039;-&amp;#039;));&lt;br /&gt;
     if not (j or y) then&lt;br /&gt;
         return (frame.args.nocat and d or d..&amp;#039;[[Category:Википедия:Статьи с ручной викификацией дат в карточке]]&amp;#039;)&lt;br /&gt;
     end&lt;br /&gt;
 end;&lt;br /&gt;
 if d2 then&lt;br /&gt;
     j2,m2,y2 = DecodeDate(d2:gsub(&amp;#039;−&amp;#039;,&amp;#039;-&amp;#039;));&lt;br /&gt;
 end;&lt;br /&gt;
 return table.concat{&lt;br /&gt;
     FormDate(j,m,y,oj,om,oy,mo),&lt;br /&gt;
     ( (frame.args[&amp;#039;nopersoncat&amp;#039;] or &amp;#039;&amp;#039;)~=&amp;#039;&amp;#039; or (f.args[&amp;#039;nocat&amp;#039;] or &amp;#039;&amp;#039;)~=&amp;#039;&amp;#039; ) and &amp;#039;&amp;#039; or table.concat{&lt;br /&gt;
         &amp;#039;[[Category:Персоналии по алфавиту]]&amp;#039;,&lt;br /&gt;
         j and string.format(&amp;#039;[[Category:%s %i %s]]&amp;#039;,catpref[mo],j,monthg[m]) or &amp;#039;&amp;#039;,&lt;br /&gt;
         y and string.format(&amp;#039;[[Category:%s в %s]]&amp;#039;,catpref[mo],y,Year0(y,&amp;#039;году&amp;#039;)) or &amp;#039;&amp;#039;&lt;br /&gt;
     },--/table.concat внутр.&lt;br /&gt;
     (function(F)--возраст&lt;br /&gt;
         if not F then return &amp;#039;&amp;#039; end;&lt;br /&gt;
         local n=F();&lt;br /&gt;
         return n and string.format(&amp;quot; (%i %s)%s&amp;quot;,&lt;br /&gt;
             n,&lt;br /&gt;
             mw.getLanguage(&amp;#039;ru&amp;#039;):plural(n,&amp;#039;год&amp;#039;,&amp;#039;года&amp;#039;,&amp;#039;лет&amp;#039;),&lt;br /&gt;
             n&amp;gt;150 and &amp;#039;[[Category:Википедия:Статьи о персоналиях с большим текущим возрастом]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
         ) or &amp;#039;&amp;#039;&lt;br /&gt;
     end)( ({&lt;br /&gt;
         [&amp;#039;Рождения&amp;#039;]=function()&lt;br /&gt;
             local now=os.date(&amp;#039;*t&amp;#039;);&lt;br /&gt;
             if (not d2 or d2==&amp;#039;&amp;#039;) and j and m and y then&lt;br /&gt;
                 return Diffy(now.day,now.month,now.year,j,m,y)&lt;br /&gt;
             end&lt;br /&gt;
         end,&lt;br /&gt;
         [&amp;#039;Смерти&amp;#039;]=function()&lt;br /&gt;
             return j and m and y and j2 and m2 and y2 and Diffy(j,m,y,j2,m2,y2);&lt;br /&gt;
         end,&lt;br /&gt;
     })[mo] ),--конец вызова функции возраста&lt;br /&gt;
     tail or &amp;#039;&amp;#039;,&lt;br /&gt;
     cat&lt;br /&gt;
 }--/table.concat внеш.&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
formdate=function(f) -- Формирует дату по 3--6 параметрам #invoke или шаблона&lt;br /&gt;
    --не использовать с пустыми аргументами&lt;br /&gt;
    if (f.args[1] or &amp;#039;&amp;#039;)~=&amp;#039;&amp;#039; and (f.args[2] or &amp;#039;&amp;#039;)~=&amp;#039;&amp;#039; or (f.args[3] or &amp;#039;&amp;#039;)~=&amp;#039;&amp;#039; then&lt;br /&gt;
        return FormDate(f.args[1],f.args[2],f.args[3],f.args[4],f.args[5],f.args[6],f.args[&amp;#039;m&amp;#039;])&lt;br /&gt;
    else&lt;br /&gt;
        local tf=f:getParent();&lt;br /&gt;
        return FormDate(tf.args[1],tf.args[2],tf.args[3],tf.args[4],tf.args[5],tf.args[6],tf.args[&amp;#039;m&amp;#039;])&lt;br /&gt;
    end&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
cmp=function(f)--Сравнивает две даты, результат соответственно -1, 0 или 1&lt;br /&gt;
    return Cmp(f.args[1],f.args[2])&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
G2J=function(f)--перевод григорианских дат в юлианские, возврат DD.MM.YYYY&lt;br /&gt;
--Не знает про 15 октября 1582 года, не работает до нашей эры и после ???99 года&lt;br /&gt;
--Если есть второй аргумент, преобразует только ДО этой даты включительно&lt;br /&gt;
--Если есть третий аргумент, результат форматирует под Персона/Дата&lt;br /&gt;
    local d,m,y=GetDate(f.args[1])&lt;br /&gt;
    if f.args[2] and Cmp(f.args[1],f.args[2])==1 then&lt;br /&gt;
        return string.format(&amp;quot;%i.%i.%i&amp;quot;,d,m,y)&lt;br /&gt;
    end&lt;br /&gt;
    local shift=math.floor(y/100)-math.floor(y/400)-2&lt;br /&gt;
    if d-shift&amp;gt;0 then&lt;br /&gt;
        return f.args[3] and string.format(&amp;quot;%i.%i.%i (%i)&amp;quot;,d,m,y,d-shift)&lt;br /&gt;
        or string.format(&amp;quot;%i.%i.%i&amp;quot;,d-shift,m,y)&lt;br /&gt;
    else&lt;br /&gt;
        if m==1 then&lt;br /&gt;
            return f.args[3]&lt;br /&gt;
            and string.format(&amp;quot;%i.1.%i (%i.12.%i)&amp;quot;,d,y,31+d-shift,y-1)&lt;br /&gt;
            or string.format(&amp;quot;%i.12.%i&amp;quot;,31+d-shift,y-1)&lt;br /&gt;
        elseif m==3 then&lt;br /&gt;
            return f.args[3] and string.format(&amp;quot;%i.3.%i (%i.2)&amp;quot;, d,y,&lt;br /&gt;
                (y%4==0 and 29 or 28)+d-shift-(y%100==0 and y%400~=0 and 1 or 0)&lt;br /&gt;
            )&lt;br /&gt;
            or string.format(&amp;quot;%i.2.%i&amp;quot;,&lt;br /&gt;
                (y%4==0 and 29 or 28)+d-shift-(y%100==0 and y%400~=0 and 1 or 0)&lt;br /&gt;
            ,y)&lt;br /&gt;
        else&lt;br /&gt;
            return f.args[3] and string.format(&lt;br /&gt;
                &amp;quot;%i.%i.%i (%i.%i)&amp;quot;, d,m,y, monthd[m-1]+d-shift,m-1&lt;br /&gt;
            )&lt;br /&gt;
            or string.format(&amp;quot;%i.%i.%i&amp;quot;,monthd[m-1]+d-shift,m-1,y)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
-- Переводит русскую дату в YYYY-MM-DD. Возвращает входное значение, если дата уже в этом формате&lt;br /&gt;
yyyymmdd = function(f)&lt;br /&gt;
    local date, hourmin = f.args[1]&lt;br /&gt;
    if mw.ustring.match(date, &amp;quot;^%s*%d+\-%d+\-%d+&amp;quot;) then&lt;br /&gt;
    	return date&lt;br /&gt;
	end&lt;br /&gt;
    hourmin = mw.ustring.match(date, &amp;quot;%s+%d+:%d+$&amp;quot;)&lt;br /&gt;
    local y, m, d = Yyyymmdd(date)&lt;br /&gt;
    if not y then&lt;br /&gt;
    	return &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Ошибка: некорректный формат даты.&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
    return string.format(&amp;#039;%4i-%02i-%02i&amp;#039;, y, m, d) .. (hourmin or &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function table.val_to_str ( v )&lt;br /&gt;
  if &amp;quot;string&amp;quot; == type( v ) then&lt;br /&gt;
    v = string.gsub( v, &amp;quot;\n&amp;quot;, &amp;quot;\\n&amp;quot; )&lt;br /&gt;
    if string.match( string.gsub(v,&amp;quot;[^&amp;#039;\&amp;quot;]&amp;quot;,&amp;quot;&amp;quot;), &amp;#039;^&amp;quot;+$&amp;#039; ) then&lt;br /&gt;
      return &amp;quot;&amp;#039;&amp;quot; .. v .. &amp;quot;&amp;#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return &amp;#039;&amp;quot;&amp;#039; .. string.gsub(v,&amp;#039;&amp;quot;&amp;#039;, &amp;#039;\\&amp;quot;&amp;#039; ) .. &amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
  else&lt;br /&gt;
    return &amp;quot;table&amp;quot; == type( v ) and table.tostring( v ) or&lt;br /&gt;
      tostring( v )&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function table.key_to_str ( k )&lt;br /&gt;
  if &amp;quot;string&amp;quot; == type( k ) and string.match( k, &amp;quot;^[_%a][_%a%d]*$&amp;quot; ) then&lt;br /&gt;
    return k&lt;br /&gt;
  else&lt;br /&gt;
    return &amp;quot;[&amp;quot; .. table.val_to_str( k ) .. &amp;quot;]&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function table.tostring( tbl )&lt;br /&gt;
  local result, done = {}, {}&lt;br /&gt;
  for k, v in ipairs( tbl ) do&lt;br /&gt;
    table.insert( result, table.val_to_str( v ) )&lt;br /&gt;
    done[ k ] = true&lt;br /&gt;
  end&lt;br /&gt;
  for k, v in pairs( tbl ) do&lt;br /&gt;
    if not done[ k ] then&lt;br /&gt;
      table.insert( result,&lt;br /&gt;
        table.key_to_str( k ) .. &amp;quot;=&amp;quot; .. table.val_to_str( v ) )&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  return &amp;quot;{&amp;quot; .. table.concat( result, &amp;quot;,&amp;quot; ) .. &amp;quot;}&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseISO8601Date(str)&lt;br /&gt;
	local pattern = &amp;quot;(%-?%d+)%-(%d+)%-(%d+)T&amp;quot;&lt;br /&gt;
	local Y, M, D = mw.ustring.match( str, pattern )&lt;br /&gt;
	return tonumber(Y), tonumber(M), tonumber(D)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseISO8601Time(str)&lt;br /&gt;
	local pattern = &amp;quot;T(%d+):(%d+):(%d+)%Z&amp;quot;&lt;br /&gt;
	local H, M, S = mw.ustring.match( str, pattern)&lt;br /&gt;
	return tonumber(H), tonumber(M), tonumber(S)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseISO8601Offset(str)&lt;br /&gt;
	if str:sub(-1)==&amp;quot;Z&amp;quot; then return 0,0 end -- ends with Z, Zulu time&lt;br /&gt;
&lt;br /&gt;
	-- matches ±hh:mm, ±hhmm or ±hh; else returns nils &lt;br /&gt;
	local pattern = &amp;quot;([-+])(%d%d):?(%d?%d?)$&amp;quot;&lt;br /&gt;
	local sign, oh, om = mw.ustring.match( str, pattern) &lt;br /&gt;
	sign, oh, om = sign or &amp;quot;+&amp;quot;, oh or &amp;quot;00&amp;quot;, om or &amp;quot;00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	return tonumber(sign .. oh), tonumber(sign .. om)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parseISO8601(str)&lt;br /&gt;
	if &amp;#039;table&amp;#039;==type(str) then&lt;br /&gt;
		if str.args and str.args[1] then&lt;br /&gt;
			str = &amp;#039;&amp;#039; .. str.args[1]&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;unknown argument type: &amp;#039; .. type( str ) .. &amp;#039;: &amp;#039; .. table.tostring( str )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local Y,M,D = parseISO8601Date(str)&lt;br /&gt;
	local h,m,s = parseISO8601Time(str)&lt;br /&gt;
	local oh,om = parseISO8601Offset(str)&lt;br /&gt;
	return tonumber(os.time({year=Y, month=M, day=D, hour=(h+oh), min=(m+om), sec=s}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local g2uBoundary1 = p.parseISO8601(&amp;#039;1582-10-15T00:00:00Z&amp;#039;)&lt;br /&gt;
local g2uBoundary2 = p.parseISO8601(&amp;#039;1700-03-12T00:00:00Z&amp;#039;)&lt;br /&gt;
local g2uBoundary3 = p.parseISO8601(&amp;#039;1800-03-13T00:00:00Z&amp;#039;)&lt;br /&gt;
local g2uBoundary4 = p.parseISO8601(&amp;#039;1900-03-14T00:00:00Z&amp;#039;)&lt;br /&gt;
local g2uBoundary5 = p.parseISO8601(&amp;#039;1918-01-26T00:00:00Z&amp;#039;) -- декрет Ленина&lt;br /&gt;
&lt;br /&gt;
-- Передаваемое время обязано быть по Григорианскому календарю (новому стилю)&lt;br /&gt;
function p.formatWiki( time, infocardClass, categoryNamePrefix )&lt;br /&gt;
	if &amp;#039;table&amp;#039;==type( time ) then&lt;br /&gt;
		if time.args and time.args[1] then&lt;br /&gt;
			time = tonumber( time.args[1] )&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;unknown argument type: &amp;#039; .. type( time ) .. &amp;#039;: &amp;#039; .. table.tostring( time )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local t = os.date(&amp;quot;*t&amp;quot;, time)&lt;br /&gt;
	if time &amp;lt; g2uBoundary1 then&lt;br /&gt;
		-- выводим просто юлианский календарь. Задавать тут григорианский некорректно&lt;br /&gt;
		return p.formatWikiImpl( t, t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Специальные даты&lt;br /&gt;
	if t.year == 1700 and t.month == 3 and t.day == 11 then&lt;br /&gt;
		return p.formatWikiImpl( {year=1700, month=2, day=29}, t, infocardClass, categoryNamePrefix)&lt;br /&gt;
	end&lt;br /&gt;
	if t.year == 1800 and t.month == 3 and t.day == 12 then&lt;br /&gt;
		return p.formatWikiImpl( {year=1800, month=2, day=29}, t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
	if t.year == 1900 and t.month == 3 and t.day == 13 then&lt;br /&gt;
		return p.formatWikiImpl( {year=1900, month=2, day=29}, t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if g2uBoundary1 &amp;lt;= time and time &amp;lt; g2uBoundary2 then&lt;br /&gt;
		return p.formatWikiImpl( os.date(&amp;quot;*t&amp;quot;, time - 10 * 24 * 60 * 60), t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
	if g2uBoundary2 &amp;lt;= time and time &amp;lt; g2uBoundary3 then&lt;br /&gt;
		return p.formatWikiImpl( os.date(&amp;quot;*t&amp;quot;, time - 11 * 24 * 60 * 60), t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
	if g2uBoundary3 &amp;lt;= time and time &amp;lt; g2uBoundary4 then&lt;br /&gt;
		return p.formatWikiImpl( os.date(&amp;quot;*t&amp;quot;, time - 12 * 24 * 60 * 60), t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
	if g2uBoundary4 &amp;lt;= time and time &amp;lt; g2uBoundary5 then&lt;br /&gt;
		return p.formatWikiImpl( os.date(&amp;quot;*t&amp;quot;, time - 13 * 24 * 60 * 60), t, infocardClass, categoryNamePrefix )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--только Григорианский календарь&lt;br /&gt;
	return p.formatWikiImpl( t, t, infocardClass, categoryNamePrefix )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ternary ( cond , T , F )&lt;br /&gt;
    if cond then return T else return F end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local nominativeMonthes = {&amp;#039;январь&amp;#039;, &amp;#039;февраль&amp;#039;, &amp;#039;март&amp;#039;, &amp;#039;апрель&amp;#039;, &amp;#039;май&amp;#039;, &amp;#039;июнь&amp;#039;,&lt;br /&gt;
    &amp;#039;июль&amp;#039;, &amp;#039;август&amp;#039;, &amp;#039;сентябрь&amp;#039;, &amp;#039;октябрь&amp;#039;, &amp;#039;ноябрь&amp;#039;, &amp;#039;декабрь&amp;#039;}&lt;br /&gt;
    &lt;br /&gt;
local genitivusMonthes = {&amp;#039;января&amp;#039;, &amp;#039;февраля&amp;#039;, &amp;#039;марта&amp;#039;, &amp;#039;апреля&amp;#039;, &amp;#039;мая&amp;#039;, &amp;#039;июня&amp;#039;,&lt;br /&gt;
    &amp;#039;июля&amp;#039;, &amp;#039;августа&amp;#039;, &amp;#039;сентября&amp;#039;, &amp;#039;октября&amp;#039;, &amp;#039;ноября&amp;#039;, &amp;#039;декабря&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
local function nominativeYear( year, nolinks )&lt;br /&gt;
    if ( year &amp;gt;= 0 ) then&lt;br /&gt;
        return nolinks and year or &amp;#039;[[&amp;#039; .. year .. &amp;#039; год|&amp;#039; .. year .. &amp;#039;]]&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return nolinks and ( 0 - year ) .. &amp;#039; до н. э.&amp;#039; or &amp;#039;[[&amp;#039; .. ( 0 - year ) .. &amp;#039; год до н. э.|&amp;#039; .. ( 0 - year ) .. &amp;#039; до н. э.]]&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function inYear( year )&lt;br /&gt;
    if ( year &amp;gt;= 0 ) then&lt;br /&gt;
        return &amp;#039;&amp;#039; .. year .. &amp;#039; году&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;&amp;#039; .. ( 0 - year) .. &amp;#039; году до н. э.&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatWikiImpl( t1, t2, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
    local nd = t2.day;&lt;br /&gt;
    local nm = t2.month;&lt;br /&gt;
    local ny = t2.year;&lt;br /&gt;
    local od = ternary ( t1.day ~= t2.day , t1.day, nil );&lt;br /&gt;
    local om = ternary ( t1.month ~= t2.month , t1.month, nil );&lt;br /&gt;
    local oy = ternary ( t1.year ~= t2.year , t1.year, nil );&lt;br /&gt;
&lt;br /&gt;
	if leftBracket == nil then&lt;br /&gt;
		leftBracket = &amp;#039;(&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if rightBracket == nil then&lt;br /&gt;
		rightBracket = &amp;#039;)&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local JulianComment = function(s)&lt;br /&gt;
		return tostring(mw.html.create(&amp;quot;abbr&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;title&amp;quot;,&amp;quot;по юлианскому календарю&amp;quot;)&lt;br /&gt;
			:wikitext(s)&lt;br /&gt;
			:done())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
    local template =&lt;br /&gt;
        (nd ~= nil and &amp;quot;1&amp;quot; or &amp;quot;&amp;quot;) .. (nm ~= nil and &amp;quot;2&amp;quot; or &amp;quot;&amp;quot;) .. (ny ~= nil and &amp;quot;3&amp;quot; or &amp;quot;&amp;quot;) ..&lt;br /&gt;
        (od ~= nil and &amp;quot;4&amp;quot; or &amp;quot;&amp;quot;) .. (om ~= nil and &amp;quot;5&amp;quot; or &amp;quot;&amp;quot;) .. (oy ~= nil and &amp;quot;6&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
    local datePart = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
    if (template == &amp;quot;12&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. string.format( nolinks and &amp;quot;%d %s&amp;quot; or &amp;quot;[[%d %s]]&amp;quot;,&lt;br /&gt;
        								nd, genitivusMonthes[nm] )&lt;br /&gt;
    elseif (template == &amp;quot;23&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. string.format( &amp;quot;%s %s&amp;quot;,&lt;br /&gt;
        								nominativeMonthes[nm], nominativeYear( ny, nolinks ) )&lt;br /&gt;
    elseif (template == &amp;quot;3&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. nominativeYear( ny, nolinks )&lt;br /&gt;
    elseif (template == &amp;quot;123&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. string.format( nolinks and &amp;quot;%d %s %s&amp;quot; or &amp;quot;[[%d %s]] %s&amp;quot;,&lt;br /&gt;
                                        nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )&lt;br /&gt;
    elseif (template == &amp;quot;124&amp;quot;) then&lt;br /&gt;
    	if nolinks then&lt;br /&gt;
    		datePart = datePart .. JulianComment(string.format( &amp;quot;%d&amp;quot;, od )&lt;br /&gt;
							).. string.format( &amp;quot; &amp;quot; .. leftBracket .. &amp;quot;%d&amp;quot; .. rightBracket .. &amp;quot; %s&amp;quot;,&lt;br /&gt;
                                        nd, genitivusMonthes[nm] )&lt;br /&gt;
        else&lt;br /&gt;
    		datePart = datePart .. JulianComment(string.format( &amp;quot;%d&amp;quot;, od )&lt;br /&gt;
							).. string.format( &amp;quot; [[%d %s|&amp;quot; .. leftBracket .. &amp;quot;%d&amp;quot; .. rightBracket .. &amp;quot; %s]]&amp;quot;,&lt;br /&gt;
                                        nd, genitivusMonthes[nm], nd, genitivusMonthes[nm] )&lt;br /&gt;
        end&lt;br /&gt;
    elseif (template == &amp;quot;1234&amp;quot;) then&lt;br /&gt;
    	if nolinks then&lt;br /&gt;
        	datePart = datePart .. JulianComment(string.format( &amp;quot;%d&amp;quot;, od )&lt;br /&gt;
							).. string.format( &amp;quot; |&amp;quot; .. leftBracket .. &amp;quot;%d&amp;quot; .. rightBracket .. &amp;quot; %s %s&amp;quot;,&lt;br /&gt;
                                        nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )&lt;br /&gt;
        else&lt;br /&gt;
        	datePart = datePart .. JulianComment(string.format( &amp;quot;%d&amp;quot;, od )&lt;br /&gt;
							).. string.format( &amp;quot; [[%d %s|&amp;quot; .. leftBracket .. &amp;quot;%d&amp;quot; .. rightBracket .. &amp;quot; %s]] %s&amp;quot;,&lt;br /&gt;
                                        nd, genitivusMonthes[nm], nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )&lt;br /&gt;
        end&lt;br /&gt;
    elseif (template == &amp;quot;1245&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. JulianComment(string.format( &amp;quot;%d %s&amp;quot;, od, genitivusMonthes[om] )&lt;br /&gt;
							).. string.format(&amp;quot; &amp;quot; .. leftBracket .. (nolinks and &amp;quot;%d %s&amp;quot; or &amp;quot;[[%d %s]]&amp;quot;) .. rightBracket .. &amp;quot;&amp;quot;, nd, genitivusMonthes[nm] )										&lt;br /&gt;
    elseif (template == &amp;quot;12345&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. JulianComment(string.format( &amp;quot;%d %s&amp;quot;, od, genitivusMonthes[om] )&lt;br /&gt;
							).. string.format(&amp;quot; &amp;quot; .. leftBracket .. (nolinks and &amp;quot;%d %s&amp;quot; or &amp;quot;[[%d %s]]&amp;quot;) .. rightBracket .. &amp;quot; %s&amp;quot;, nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )&lt;br /&gt;
    elseif (template == &amp;quot;123456&amp;quot;) then&lt;br /&gt;
        datePart = datePart .. JulianComment(string.format( &amp;quot;%d %s %d&amp;quot;, od, genitivusMonthes[om], oy ))&lt;br /&gt;
							.. &amp;#039;&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
							.. string.format(&amp;quot; &amp;quot; .. leftBracket .. (nolinks and &amp;quot;%d %s %s&amp;quot; or &amp;quot;[[%d %s]] %s&amp;quot;) .. rightBracket , nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )&lt;br /&gt;
    else&lt;br /&gt;
        datePart = datePart .. &amp;#039;формат неверен&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    datePart = datePart .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
    local infocardTemplate =&lt;br /&gt;
        (nd ~= nil and &amp;quot;1&amp;quot; or &amp;quot;&amp;quot;) .. (nm ~= nil and &amp;quot;2&amp;quot; or &amp;quot;&amp;quot;) .. (ny ~= nil and &amp;quot;3&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
	if infocardClass then&lt;br /&gt;
	    if (infocardTemplate == &amp;quot;123&amp;quot;) then&lt;br /&gt;
	        datePart = datePart .. string.format(&amp;#039;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;%04d-%02d-%02d&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;#039;, infocardClass , ny , nm , nd )&lt;br /&gt;
	    elseif (infocardTemplate == &amp;quot;23&amp;quot;) then&lt;br /&gt;
	        datePart = datePart .. string.format(&amp;#039;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;%04d-%02d&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;#039;, infocardClass , ny , nm )&lt;br /&gt;
	    elseif (infocardTemplate == &amp;quot;3&amp;quot;) then&lt;br /&gt;
	        datePart = datePart .. string.format(&amp;#039;&amp;lt;span style=&amp;quot;display:none;&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;%04d&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;#039;, infocardClass , ny )&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
    if categoryNamePrefix then&lt;br /&gt;
        if ( nd ~= nil and nm ~= nil) then&lt;br /&gt;
            datePart = datePart .. &amp;#039;[[Category:&amp;#039; .. categoryNamePrefix .. &amp;#039; &amp;#039; .. nd .. &amp;#039; &amp;#039; .. genitivusMonthes[nm] .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        if ( ny ~= nil) then&lt;br /&gt;
            datePart = datePart .. &amp;#039;[[Category:&amp;#039; .. categoryNamePrefix .. &amp;#039; в &amp;#039; .. inYear( ny ) .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return datePart&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ru&gt;Andras</name></author>
	</entry>
</feed>