Изменения

исправления
Строка 16: Строка 16:  
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',
Строка 41: Строка 43:  
   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',
Строка 161: Строка 163:     
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"]=""})
Строка 184: Строка 186:  
end
 
end
   −
function shallowcopy(orig)
+
local function shallowcopy(orig)
 
     local orig_type = type(orig)
 
     local orig_type = type(orig)
 
     local copy
 
     local copy
Строка 239: Строка 241:  
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")
Строка 390: Строка 392:  
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)
Строка 401: Строка 403:  
-- 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
Строка 407: Строка 409:  
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)
Строка 451: Строка 453:  
(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})
Строка 476: Строка 478:  
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)}, " ")
Строка 494: Строка 496:  
-- 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
Строка 513: Строка 515:  
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
Строка 528: Строка 530:  
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
Строка 547: Строка 549:  
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
Строка 564: Строка 566:  
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()
Строка 574: Строка 576:  
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
Строка 592: Строка 594:  
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 = ""
Строка 823: Строка 825:  
     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 "г"
Строка 878: Строка 880:  
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 = "года"
Анонимный участник