Модуль:MoonInfoDay
Вӹлвӓл сӹн
Для документации этого модуля может быть создана страница Модуль:MoonInfoDay/doc
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 = "🌑", "[[Тӹлзӹн фазывлӓжӹ|У тӹлзӹ]]"
elseif age < 6 then
moonSymbol, moonPhase = "🌒", "[[Тӹлзӹн фазывлӓжӹ|Сӓмӹрӹк тӹлзӹ]]"
elseif age < 10 then
moonSymbol, moonPhase = "🌓", "[[Тӹлзӹн фазывлӓжӹ|Пӹтӓришӹ церпет]]"
elseif age < 13 then
moonSymbol, moonPhase = "🌔", "[[Тӹлзӹн фазывлӓжӹ|Кушшы тӹлзӹ]]"
elseif age < 17 then
moonSymbol, moonPhase = "🌕", "[[Тӹлзӹн фазывлӓжӹ|Целӓ тӹлзӹ]]"
elseif age < 21 then
moonSymbol, moonPhase = "🌖", "[[Тӹлзӹн фазывлӓжӹ|Кӧтӹргӹшӹ тӹлзӹ]]"
elseif age < 24 then
moonSymbol, moonPhase = "🌗", "[[Тӹлзӹн фазывлӓжӹ|Остатка церпет]]"
else
moonSymbol, moonPhase = "🌘", "[[Тӹлзӹн фазывлӓжӹ|Тошты тӹлзӹ]]"
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 (%.2f тӹлзӹ кечӹ).", moonSymbol, moonPhase, age)
end
-- Возврат таблицы с функциями
return p