Изменения

Перейти к навигации Перейти к поиску
новая функция ввода (вывод отрицательных величин пока неверный)
Строка 4: Строка 4:  
local bool_to_number={ [true]=1, [false]=0 }
 
local bool_to_number={ [true]=1, [false]=0 }
 
local monthlang = {"января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"}
 
local monthlang = {"января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"}
 +
local griglist = {"г", "g"}
 +
local julilist = {"ю", "j"}
    
local function purif(str)
 
local function purif(str)
Строка 90: Строка 92:  
--  more detailed check for 31.02.0000 needed
 
--  more detailed check for 31.02.0000 needed
 
--  check for other calendars needed
 
--  check for other calendars needed
 +
end
 +
 +
local islist = function ( var, list )
 +
    local n = #list
 +
local inlist = false
 +
for i=1,n do
 +
if var == list[i] then inlist = true end
 +
end
 +
    return inlist
 
end
 
end
   Строка 359: Строка 370:  
     local gdate = numstr2date(datein)
 
     local gdate = numstr2date(datein)
 
     local jdate = jd2jul(gri2jd(gdate))
 
     local jdate = jd2jul(gri2jd(gdate))
 +
local output = twodates2str(jdate, gdate)
 +
    return output
 +
end
 +
 +
--  =p.OldDate(mw.getCurrentFrame():newChild{title="smth",args={"20.02.2020"}})
 +
 +
function p.OldDate( frame )
 +
    local args = getArgs(frame, { frameOnly = true })
 +
    local gdate, jdate = {}
 +
    local strin = args[1]
 +
    local calinp = ""
 +
    local era = ""
 +
    if not args[2] then calinp = "г" else calinp = args[2]:lower() end
 +
    if not args[3] then era = "нэ" else era = args[3]:lower() end
 +
    local datein = numstr2date(strin)
 +
    if era == "нэ" then
 +
if islist(calinp,griglist) then
 +
gdate = datein
 +
    jdate = jd2jul(gri2jd(gdate))
 +
    elseif islist(calinp,julilist) then
 +
jdate = datein
 +
    gdate = jd2gri(jul2jd(jdate))
 +
    else error("Second argument must be 'g' or 'j'")
 +
    end
 +
elseif era == "днэ" then
 +
local negyear = datein.year
 +
datein.year = 1 - negyear
 +
if islist(calinp,griglist) then
 +
gdate = datein
 +
    jdate = jd2jul(gri2jd(gdate))
 +
    elseif islist(calinp,julilist) then
 +
jdate = datein
 +
    gdate = jd2gri(jul2jd(jdate))
 +
    else error("Second argument must be 'g' or 'j'")
 +
    end
 +
end
 
local output = twodates2str(jdate, gdate)
 
local output = twodates2str(jdate, gdate)
 
     return output
 
     return output
Анонимный участник

Реклама:

Навигация