Mine sisu juurde

Modul':MoonInfoDay

Мегавики-späi

local p = {}

-- Таблица с названиями месяцев local months = {

   "ғинуар", "февраль", "март", "апрель", "май", "июнь",
   "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"

}

-- Вспомогательная функция для расчёта Юлианской даты local function calculateJulianDate(year, month, day)

   if month <= 2 then
       year = year - 1
       month = month + 12
   end
   local A = math.floor(year / 100)
   local B = 2 - A + math.floor(A / 4)
   return math.floor(365.25 * (year + 4716)) + math.floor(30.6001 * (month + 1)) + day + B - 1524.5

end

-- Расчёт фазы Луны и лунного дня local function calculateMoonPhase(jd)

   local daysSinceNewMoon = (jd - 2451550.1) / 29.53058867
   local phase = daysSinceNewMoon % 1
   local age = phase * 29.53058867 -- Возраст Луны с десятичными долями
   local moonDay = math.floor((jd - 2451550.1) % 29.53058867) + 1 -- Лунный день
   local moonSymbol, moonPhase
   if age < 2 then
       moonSymbol, moonPhase = "🌑", "Uz’ku"
   elseif age < 6 then
       moonSymbol, moonPhase = "🌒", "Nor’ kudmaine"
   elseif age < 10 then
       moonSymbol, moonPhase = "🌓", "Ezmäine nelländez"
   elseif age < 13 then
       moonSymbol, moonPhase = "🌔", "Kaznu kudmaine"
   elseif age < 17 then
       moonSymbol, moonPhase = "🌕", "Täuz’kudan’"
   elseif age < 21 then
       moonSymbol, moonPhase = "🌖", "Polenu kudmaine"
   elseif age < 24 then
       moonSymbol, moonPhase = "🌗", "Jäl’gmäine nelländez"
   else
       moonSymbol, moonPhase = "🌘", "Vanh kudmaine"
   end
   return moonSymbol, moonPhase, age

end

-- Функция для вычисления Луны на определённую дату function p.calculateMoonForDay(frame)

   local dateString = frame.args["date"]
   local year, month, day = dateString:match("(%d+)-(%d+)-(%d+)")
   year = tonumber(year)
   month = tonumber(month)
   day = tonumber(day)
   local jd = calculateJulianDate(year, month, day)
   local moonSymbol, moonPhase, age = calculateMoonPhase(jd)
   
   return string.format("%s %s (kun igä  %.2f päiväd).", moonSymbol, moonPhase, age)

end

-- Возврат таблицы с функциями return p