[теллина верси][теллина верси]
Чулацам дӀабаьккхина Чулацам тӀетоьхна
тест
Билгало: йухайаьккхина
Йухадаьккхина декъашхочун Takhirgeran Umar (дийц.) нисдар 8812623
Билгало: йухайаккхар
МогӀа 2:
В это модуле собраны функции, связанные с работой с датами.
]]
local monthg = {'январяянварехь', 'февраляфевралехь', 'мартамартехь', 'апреляапрелехь', 'маямайхь', 'июняиюнехь',
'июляиюлехь', 'августаавгустехь', "сентябрясентябрехь", "октябряоктябрехь", "ноябряноябрехь", "декабрядекабрехь"}
 
local monthd = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
МогӀа 40:
local function Year0(y,t)-- аналог Год0
if y>0 then return table.concat{
'[[', tostring(y), ' годшо|', t and tostring(y)..' '..t or tostring(y), ']]'
} else return table.concat{
'[[', tostring(-y), ' годшо довайн н.эра э.тӀеяле|',
t and tostring(-y)..' '..t or tostring(-y),
' до н. э.]]'
МогӀа 49:
end
 
local function FormDate(j,m,y,oj,om,oy,mo)-- ~ ПерсонаАдам/ДатаТерахь/Logic 4
if j then
if not m then return "''формат невереннийса яц''" end
if y then return
string.format(
'<span classstyle="white-space:nowrap;">%s<span style="display:none">(<span class="%s">%04i-%02i-%02i</span>)</span></span>',
table.concat(
oj and (
МогӀа 60:
oy and {-- ДД ММММ ГГГГ ([[ДД ММММ]] [[ГГГГ]])
oj,'&nbsp;',monthg[om],'&nbsp;',oy,
'</span> <span classstyle="white-space:nowrap;">([[',
j, ' ', monthg[m],']] ',Year0(y),')'
} or {-- ДД ММММ ([[ДД ММММ]]) [[ГГГГ]]
oj,'&nbsp;',monthg[om],' ([[',j,'&nbsp;',monthg[m],']]) ',Year0(y)
}
) or {-- ДД [[ДД ММММ|ДД (ДД) ММММ]] [[ГГГГ]]
oj,'&nbsp;[[',j,' ',monthg[m],'|',oj,'&nbsp;(',j,')&nbsp;',monthg[m],']] ',Year0(y)
}
) or {'[[',j,'&nbsp;',monthg[m],']]&nbsp;',Year0(y)}
),--/table.concat
({['РожденияБаран']='bday',['СмертиБаларан']='dday'})[mo] or '',
y,m,j
)--/string.format
else return
'<span classstyle="white-space:nowrap;">' .. table.concat(
oj and (
om and {-- ДД ММММ ([[ДД ММММ]])
oj,'&nbsp;',monthg[om],' ([[',j,'&nbsp;',monthg[m],']])</span>'
} or {-- ДД [[ДД ММММ|ДД (ДД) ММММ]]
oj,'&nbsp;[[',j,' ',monthg[m],'|',oj,'&nbsp;(',j,')&nbsp;',monthg[m],']]</span>'
}
) or {'[[',j,'&nbsp;',monthg[m],']]</span>'}
МогӀа 86:
else
return y and string.format(
'<span classstyle="white-space:nowrap;">%s<span style="display:none;">(<span class="bday">%04i</span>)</span></span>',
Year0(y,'годшо'),y) or "''формат невереннийса яц''"
end
end
МогӀа 110:
 
local function Yyyymmdd(r)--Переводит русскую дату в YYYY,MM,DD
local d, m, y, M = mw.ustring.match(r, "^%s*(%d%d?)%s+([а-яА-Я]+)%s+(%d+)")
if not m then return nil end
m = mw.ustring.lower(m)
for i=1,12 do if m==monthg[i] then M=i;break end end--тупо перебор
 
if not M then return nil end
--тупо перебор
return tonumber(y), M, tonumber(d)
for i = 1, 12 do
if m == monthg[i] then
M = i
break
end
end
 
if not M then
return nil
end
return tonumber(y), M, tonumber(d)
end
 
МогӀа 137 ⟶ 127 :
end;
 
DecodeDate = DecodeDate;Diffy=Diffy;Year0=Year0;GetDate=GetDate;Cmp=Cmp;
Yyymmdd=Yyymmdd;
Diffy = Diffy;
Year0 = Year0;
GetDate = GetDate;
Cmp = Cmp;
Yyyymmdd = Yyyymmdd;
 
diffy = function(f)-- принимает параметры #invoke в виде двух строк-дат
local d1,m1,y1=DecodeDate(f.args[1]);
local d0,m0,y0=DecodeDate(f.args[2])
МогӀа 154 ⟶ 140 :
persdate=function(f)-- Для шаблона Персона/Дата;{{#invoke:dates|persdate|nocat={{NAMESPACE}}}}
local frame=f:getParent();
local catpref,mo,d,d2={['РожденияБар']='РодившиесяБинарш',['СмертиБалар']='УмершиеБелларш'}, frame.args[1],frame.args[2],frame.args[3]
local cat, j,m,y,oj,om,oy,tail, j2,m2,y2, age = ''
if d then
j,m,y,oj,om,oy,tail=DecodeDate(d:gsub('−','-'));
if not (j or y) then
return (frame.args.nocat and d or d..'[[CategoryКатегори:ВикипедияВикипеди:СтатьиКепан счуьра ручнойтерахьаш викификациейкуьга датвикификаци вдина карточкейолу йаззамаш]]')
end
end;
МогӀа 168 ⟶ 154 :
FormDate(j,m,y,oj,om,oy,mo),
( (frame.args['nopersoncat'] or '')~='' or (f.args['nocat'] or '')~='' ) and '' or table.concat{
'[[CategoryКатегори:ПерсоналииАдамаш по алфавитуабатца]]',
j and string.format('[[CategoryКатегори:%s %i %s]]',catpref[mo],j,monthg[m]) or '',
y and string.format('[[CategoryКатегори:%s в %s]]',catpref[mo],y,Year0(y,'годушарахь')) or ''
},--/table.concat внутр.
(function(F)--возраст
МогӀа 177 ⟶ 163 :
return n and string.format(" (%i %s)%s",
n,
mw.getLanguage('ruce'):plural(n,'годшо','годашо','летшо'),
n>150 and '[[CategoryКатегори:ВикипедияВикипеди:Статьи о персоналиях с большим текущим возрастом]]' or ''
) or ''
end)( ({
['РожденияБар']=function()
local now=os.date('*t');
if (not d2 or d2=='') and j and m and y then
МогӀа 187 ⟶ 173 :
end
end,
['СмертиБалар']=function()
return j and m and y and j2 and m2 and y2 and Diffy(j,m,y,j2,m2,y2);
end,
МогӀа 243 ⟶ 229 :
end;
 
yyyymmdd = function(f)-- Переводит русскую дату в YYYY-MM-DD. Возвращает входное значение, если дата уже в этом формате
local y, m, d = Yyyymmdd(datef.args[1])
yyyymmdd = function(f)
return string.format('%4i-%02i-%02i', y, m, d) .. (hourmin or '')
local date, hourmin = f.args[1]
if mw.ustring.match(date, "^%s*%d+\-%d+\-%d+") then
return date
end
hourmin = mw.ustring.match(date, "%s+%d+:%d+$")
local y, m, d = Yyyymmdd(date)
if not y then
return '<span class="error">Ошибка: некорректный формат даты.</span>'
end
return string.format('%4i-%02i-%02i', y, m, d) .. (hourmin or '')
end
}
МогӀа 294 ⟶ 271 :
end
 
local function parseISO8601Date(str)
local pattern = "(%-?%d+)%-(%d+)%-(%d+)T"
local Y, M, D = mw.ustring.match( str, pattern )
МогӀа 300 ⟶ 277 :
end
 
local function parseISO8601Time(str)
local pattern = "T(%d+):(%d+):(%d+)%Z"
local H, M, S = mw.ustring.match( str, pattern)
МогӀа 306 ⟶ 283 :
end
 
local function parseISO8601Offset(str)
if str:sub(-1)=="Z" then return 0,0 end -- ends with Z, Zulu time
 
МогӀа 380 ⟶ 357 :
end
 
local function ternary ( cond , T , F )
if cond then return T else return F end
end
МогӀа 387 ⟶ 364 :
'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'}
local genitivusMonthes = {'январяянварехь', 'февраляфевралехь', 'мартамартехь', 'апреляапрелехь', 'маямайхь', 'июняиюнехь',
'июляиюлехь', 'августаавгустехь', 'сентябрясентябрехь', 'октябряоктябрехь', 'ноябряноябрехь', 'декабрядекабрехь'}
 
local function nominativeYear( year, nolinksshowOnlyYear )
if ( year >= 0 ) then
if (showOnlyYear == true) then
return nolinks and year orreturn '[[' .. year .. ' годшо|' .. year .. ']]'
else
return '[[' .. year .. ' шо|' .. year .. ' шеран]]'
if not y then end
else
return nolinks and ( 0 - year ) .. ' до н. э.' or '[[' .. ( 0 - year ) .. ' годшо довайн н.эра э.тӀеяле|' .. ( 0 - year ) .. ' довайн н.эра э.тӀеяле]]'
end
end
 
local function inYear( year )
if ( year >= 0 ) then
return '' .. year .. ' годушарахь'
else
return '' .. ( 0 - year) .. ' годушарахь довайн н.эра э.тӀеяле'
end
end
 
function p.formatWikiImpl( t1, t2, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )
local nd = t2.day;
local nm = t2.month;
МогӀа 414 ⟶ 395 :
local oy = ternary ( t1.year ~= t2.year , t1.year, nil );
 
if leftBracket == nil then
leftBracket = '('
end
if rightBracket == nil then
rightBracket = ')'
end
local JulianComment = function(s)
return tostring(mw.html.create("abbr")
:attr("title","по юлианскому календарю")
:wikitext(s)
:done())
end
 
local template =
(nd ~= nil and "1" or "") .. (nm ~= nil and "2" or "") .. (ny ~= nil and "3" or "") ..
(od ~= nil and "4" or "") .. (om ~= nil and "5" or "") .. (oy ~= nil and "6" or "")
local datePart = '<span classstyle="white-space:nowrap;">'
if (template == "12") then
datePart = datePart .. string.format( nolinks and "%d %s" or "[[%d %s]]",
nd, genitivusMonthesnominativeMonthes[nm] )
elseif (template == "23") then
datePart = datePart .. string.format( "%s [[%s]]",
nominativeMonthes[nm], nominativeYear( ny, nolinksfalse ), nominativeMonthes[nm] )
elseif (template == "3") then
datePart = datePart .. nominativeYear( ny, nolinkstrue )
elseif (template == "123") then
datePart = datePart .. string.format( nolinks and "%d '%s %s" or "[[%d %s]] %s"',
nd, genitivusMonthes[nm], nominativeYear( ny, nolinksfalse ), nd, nominativeMonthes[nm])
elseif (template == "124") then
datePart = datePart .. JulianComment(string.format( "[[%d", od%s|%d (%d) %s]]",
if nolinks then
nd, genitivusMonthesnominativeMonthes[nm], od, nd, genitivusMonthesnominativeMonthes[nm] )
datePart = datePart .. JulianComment(string.format( "%d", od )
).. string.format( " " .. leftBracket .. "%d" .. rightBracket .. " %s",
nd, genitivusMonthes[nm] )
else
datePart = datePart .. JulianComment(string.format( "%d", od )
).. string.format( " [[%d %s|" .. leftBracket .. "%d" .. rightBracket .. " %s]]",
nd, genitivusMonthes[nm], nd, genitivusMonthes[nm] )
end
elseif (template == "1234") then
datePart = datePart .. JulianComment(string.format( "%s [[%d", od%s|%d (%d) %s]]",
if nolinks then
nominativeYear(ny, false), nd, nominativeMonthes[nm], od, nd, nominativeMonthes[nm])
datePart = datePart .. JulianComment(string.format( "%d", od )
).. string.format( " |" .. leftBracket .. "%d" .. rightBracket .. " %s %s",
nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )
else
datePart = datePart .. JulianComment(string.format( "%d", od )
).. string.format( " [[%d %s|" .. leftBracket .. "%d" .. rightBracket .. " %s]] %s",
nd, genitivusMonthes[nm], nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )
end
elseif (template == "1245") then
datePart = datePart .. JulianComment(string.format( "%d %s", od, genitivusMonthes([om][%d %s]])",
od, nominativeMonthes[om], nd, genitivusMonthesnominativeMonthes[nm] )
).. string.format(" " .. leftBracket .. (nolinks and "%d %s" or "[[%d %s]]") .. rightBracket .. "", nd, genitivusMonthes[nm] )
elseif (template == "12345") then
datePart = datePart .. JulianComment(string.format( "%s %d %s", od, genitivusMonthes([om][%d %s]])",
nominativeYear( ny, false ), od, nominativeMonthes[om], nd, nominativeMonthes[nm] )
).. string.format(" " .. leftBracket .. (nolinks and "%d %s" or "[[%d %s]]") .. rightBracket .. " %s", nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )
elseif (template == "123456") then
datePart = datePart .. JulianComment(string.format( "'%d %sd %d",s</span> od,<span style="white-space:nowrap;">(%s genitivusMonthes[om], oy[%d %s]]))',
ndoy, genitivusMonthesod, nominativeMonthes[nmom], nominativeYear( ny, nolinksfalse ), nd, nominativeMonthes[nm] )
.. '</span> <span class="nowrap">'
.. string.format(" " .. leftBracket .. (nolinks and "%d %s %s" or "[[%d %s]] %s") .. rightBracket , nd, genitivusMonthes[nm], nominativeYear( ny, nolinks ) )
else
datePart = datePart .. 'формат невереннийса яц'
end
datePart = datePart .. '</span>'
МогӀа 485 ⟶ 436 :
if infocardClass then
if (infocardTemplate == "123") then
datePart = datePart .. string.format('<span style="display:none">(<span class="%s">%04d-%02d-%02d</span>)</span>', .. infocardClass ,.. '">{{padleft:' .. ny ,.. '|4|0}}-{{padleft:' .. nm ,.. '|2|0}}-{{padleft:' .. nd .. '|2|0}}</span>)</span>'
elseif (infocardTemplate == "23") then
datePart = datePart .. string.format('<span style="display:none">(<span class="%s' .. infocardClass .. '">%04d{{padleft:' .. ny .. '|4|0}}-%02d{{padleft:' .. nm .. '|2|0}}</span>)</span>', infocardClass , ny , nm )
elseif (infocardTemplate == "3") then
datePart = datePart .. string.format('<span style="display:none;">(<span class="%s' .. infocardClass .. '">%04d{{padleft:' .. ny .. '|4|0}}</span>)</span>', infocardClass , ny )
end
end
МогӀа 495 ⟶ 446 :
if categoryNamePrefix then
if ( nd ~= nil and nm ~= nil) then
datePart = datePart .. '[[CategoryКатегори:' .. categoryNamePrefix .. ' ' .. nd .. ' ' .. genitivusMonthes[nm] .. ']]'
end
if ( ny ~= nil) then
datePart = datePart .. '[[CategoryКатегори:' .. categoryNamePrefix .. ' в ' .. inYear( ny ) .. ']]'
end
end