Изменения
исправления
local comment = { '<span style="border-bottom: 1px dotted; cursor: help" title="по юлианскому календарю">','</span>'}
local comment = { '<span style="border-bottom: 1px dotted; cursor: help" title="по юлианскому календарю">','</span>'}
-- duplicates:
-- AST, BST, CST, ECT, IST, MST, PST, SST,
local known_tzs = {
local known_tzs = {
ACDT='+10:30', ACST='+09:30', ACT ='+08:00', ADT ='-03:00', AEDT ='+11:00',
ACDT='+10:30', ACST='+09:30', ACT ='+08:00', ADT ='-03:00', AEDT ='+11:00',
SST ='+08:00', TAHT='-10:00', THA ='+07:00', UTC ='+00:00', UYST ='-02:00',
SST ='+08:00', TAHT='-10:00', THA ='+07:00', UTC ='+00:00', UYST ='-02:00',
UYT ='-03:00', VET ='-04:30', VLAT='+10:00', WAT ='+01:00', WEDT ='+01:00',
UYT ='-03:00', VET ='-04:30', VLAT='+10:00', WAT ='+01:00', WEDT ='+01:00',
WEST='+01:00', WET ='+00:00', YAKT='+09:00', YEKT ='+05:00', MSK ='+03:00',
WEST='+01:00', WET ='+00:00', YAKT='+09:00', YEKT ='+05:00',
-- US Millitary (for RFC-822)
-- US Millitary (for RFC-822)
Z='+00:00', A='-01:00', M='-12:00', N='+01:00', Y='+12:00',
Z='+00:00', A='-01:00', M='-12:00', N='+01:00', Y='+12:00',
local function init(num)
local function init(num)
output = {}
local output = {}
for i=1,num do
for i=1,num do
table.insert(output, {["year"]="", ["month"]="", ["day"]=""})
table.insert(output, {["year"]="", ["month"]="", ["day"]=""})
end
end
function shallowcopy(orig)
local function shallowcopy(orig)
local orig_type = type(orig)
local orig_type = type(orig)
local copy
local copy
end
end
function isdate ( chain , jul ) -- можно использовать для проверки таблиц с полями day, month, year
local function isdate ( chain , jul ) -- можно использовать для проверки таблиц с полями day, month, year
if not chain then return false
if not chain then return false
elseif (not type(chain) == "table")
elseif (not type(chain) == "table")
else numyear = 1 - numyear end
else numyear = 1 - numyear end
if wiki then
if wiki then
-- output = table.concat({'[[', numyear,' год',bcmark,'|', numyear,']]', " ", yearmark, " ", bcmark})
-- output = tCon({'[[', numyear,' год',bcmark,'|', numyear,']]', " ", yearmark, " ", bcmark})
output = table.concat({'[[', numyear,' год',bcmark,'|', trim(numyear .. " " .. yearmark .. " " .. bcmark), ']]'})
output = tCon({'[[', numyear,' год',bcmark,'|', trim(numyear .. " " .. yearmark .. " " .. bcmark), ']]'})
else
else
output = table.concat({numyear, " ", yearmark, bcmark})
output = tCon({numyear, " ", yearmark, bcmark})
end
end
return trim(output)
return trim(output)
-- if not isdate(wikidate) then wiki = false end
-- if not isdate(wikidate) then wiki = false end
if not ispartdate(datein) then return "" end
if not ispartdate(datein) then return "" end
local dm_separ, output = ""
local dm_separ, output = "", nil
if (not (not datein.day)) and (not (not datein.month)) then dm_separ = " " end
if (not (not datein.day)) and (not (not datein.month)) then dm_separ = " " end
if (not datein.month) then datein.month = "" end
if (not datein.month) then datein.month = "" end
local monlan = monthlang[datein.month] or ""
local monlan = monthlang[datein.month] or ""
if wiki and not inner_brt then
if wiki and not inner_brt then
output = table.concat({"[[", wikidate.day, " ", monthlang[wikidate.month] or "",
output = tCon({"[[", wikidate.day, " ", monthlang[wikidate.month] or "",
"|", (datein.day or ""), dm_separ, monlan, "]]"})
"|", (datein.day or ""), dm_separ, monlan, "]]"})
elseif wiki then
elseif wiki then
output = table.concat({"[[", wikidate.day, " ", monthlang[wikidate.month] or "",
output = tCon({"[[", wikidate.day, " ", monthlang[wikidate.month] or "",
"|", (datein.day or ""), dm_separ, monlan})
"|", (datein.day or ""), dm_separ, monlan})
else
else
output = table.concat({datein.day, dm_separ, monlan})
output = tCon({datein.day, dm_separ, monlan})
end
end
return trim(output)
return trim(output)
(m2 or ""),
(m2 or ""),
(y2 or "")
(y2 or "")
--mw.log(table.concat({gd,gm,gy,jd,jm,jy}))
--mw.log(tCon({gd,gm,gy,jd,jm,jy}))
local gm_sep = {" [["," год|","]]"}
local gm_sep = {" [["," год|","]]"}
if (not gy) or (gy == "") then gm_sep = {"","",""} end
if (not gy) or (gy == "") then gm_sep = {"","",""} end
return table.concat({comment[1],trim(trim(jd .. " " .. jm) .. " " .. jy ),
return tCon({comment[1],trim(trim(jd .. " " .. jm) .. " " .. jy ),
comment[2]," ([[",trim(gd .. " " .. gm),"]]",gm_sep[1],(gy:match("(%d+)") or ""),
comment[2]," ([[",trim(gd .. " " .. gm),"]]",gm_sep[1],(gy:match("(%d+)") or ""),
gm_sep[2],gy,gm_sep[3],")",category.incomplete_parameters})
gm_sep[2],gy,gm_sep[3],")",category.incomplete_parameters})
if jd.year == gd.year then
if jd.year == gd.year then
cd.year = gd.year
cd.year = gd.year
gd.year, jd.year = nil
gd.year, jd.year = nil, nil
end
end
if jd.month == gd.month then
if jd.month == gd.month then
cd.month = gd.month
cd.month = gd.month
gd.month, jd.month = nil
gd.month, jd.month = nil, nil
end
end
if (not not cd.month) and wm then
if (not not cd.month) and wm then
return table.concat({comment[1] .. trim(day2lang(jd,jdate,false) .. " " .. year2lang(jd.year,yearmark,false)) .. comment[2],
return tCon({comment[1] .. trim(day2lang(jd,jdate,false) .. " " .. year2lang(jd.year,yearmark,false)) .. comment[2],
trim(left .. day2lang(gd,gdate,wd,wm) .. " " .. year2lang(gd.year,yearmark,wy)) .. right,
trim(left .. day2lang(gd,gdate,wd,wm) .. " " .. year2lang(gd.year,yearmark,wy)) .. right,
day2lang(cd,gdate,false) .. "]]", trim(year2lang(cd.year,yearmark,wy)..msg)}, " ")
day2lang(cd,gdate,false) .. "]]", trim(year2lang(cd.year,yearmark,wy)..msg)}, " ")
end
end
return table.concat({comment[1] .. trim(day2lang(jd,jdate,false) .. " " .. year2lang(jd.year,yearmark,false)) .. comment[2],
return tCon({comment[1] .. trim(day2lang(jd,jdate,false) .. " " .. year2lang(jd.year,yearmark,false)) .. comment[2],
trim(left .. day2lang(gd,gdate,wd) .. " " .. year2lang(gd.year,yearmark,wy)) .. right,
trim(left .. day2lang(gd,gdate,wd) .. " " .. year2lang(gd.year,yearmark,wy)) .. right,
trim(day2lang(cd,gdate,false)), trim(year2lang(cd.year,yearmark,wy)..msg)}, " ")
trim(day2lang(cd,gdate,false)), trim(year2lang(cd.year,yearmark,wy)..msg)}, " ")
-- 40) Блок функций для перевода дат с использованием [[Юлианская дата]]
-- 40) Блок функций для перевода дат с использованием [[Юлианская дата]]
function gri2jd( datein )
local function gri2jd( datein )
if not isdate(datein) then return error((datein.day or "") .. "." .. (datein.month or "") .."." .. (datein.year or "") .. " неподходящая дата") end
if not isdate(datein) then return error((datein.day or "") .. "." .. (datein.month or "") .."." .. (datein.year or "") .. " неподходящая дата") end
local year = datein.year
local year = datein.year
end
end
function jd2jul( jd )
local function jd2jul( jd )
if type(jd) ~= "number" then return error("Промежуточная переменная " .. (jd or "") .. " не является числом") end
if type(jd) ~= "number" then return error("Промежуточная переменная " .. (jd or "") .. " не является числом") end
-- calendar date calculation
-- calendar date calculation
end
end
function jul2jd( datein )
local function jul2jd( datein )
if not isdate(datein,true) then return error((datein.day or "") .. "." .. (datein.month or "") ..".".. (datein.year or "") .. " неподходящая дата") end
if not isdate(datein,true) then return error((datein.day or "") .. "." .. (datein.month or "") ..".".. (datein.year or "") .. " неподходящая дата") end
local year = datein.year
local year = datein.year
end
end
function jd2gri( jd )
local function jd2gri( jd )
if type(jd) ~= "number" then return error("Промежуточная переменная " .. (jd or "") .. " не является числом") end
if type(jd) ~= "number" then return error("Промежуточная переменная " .. (jd or "") .. " не является числом") end
-- calendar date calculation
-- calendar date calculation
end
end
function astroyear(num, bc)
local function astroyear(num, bc)
if not num then return error()
if not num then return error()
elseif type(num) ~= "number" then return error()
elseif type(num) ~= "number" then return error()
end
end
function recalc(datein,calend)
local function recalc(datein,calend)
if inlist(calend,params[1]) then
if inlist(calend,params[1]) then
return jd2jul(gri2jd(datein)), datein
return jd2jul(gri2jd(datein)), datein
elseif inlist(calend,params[2]) then
elseif inlist(calend,params[2]) then
return datein, jd2gri(jul2jd(datein))
return datein, jd2gri(jul2jd(datein))
else error("Параметр " .. (calend or "") .. " не опознан, разрешённые: " .. table.concat(params[1]," ") .. " и " .. table.concat(params[2]," "))
else error("Параметр " .. (calend or "") .. " не опознан, разрешённые: " .. tCon(params[1]," ") .. " и " .. tCon(params[2]," "))
end
end
end
end
local cat = ""
local cat = ""
local nums = {}
local nums = {}
local hmarg, timedec = 0
local hmarg, timedec = 0, 0
local mmarg = "00"
local mmarg = "00"
local output = ""
local output = ""
local args = getArgs(frame, { frameOnly = true })
local args = getArgs(frame, { frameOnly = true })
if not args[1] then return err end
if not args[1] then return err end
local gdate, jdate = {}
local gdate, jdate = {}, {}
local strin = args[1]
local strin = args[1]
local cal = args[2]:lower() or "г"
local cal = args[2]:lower() or "г"
local datein = {["year"]=purif(year), ["month"]=purif(month), ["day"]=purif(day)}
local datein = {["year"]=purif(year), ["month"]=purif(month), ["day"]=purif(day)}
jdate, gdate = recalc(datein,cal)
local jdate, gdate = recalc(datein,cal)
local yearmark = "года"
local yearmark = "года"