יחידה:לוח מועדים
מראה
ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:לוח מועדים/תיעוד
-- טבלת מועדים קבועים לפי תאריך עברי
local p = {}
local calendar = {
["1 תשרי"] = "ראש השנה",
["2 תשרי"] = "ראש השנה",
["3 תשרי"] = "עשרת ימי תשובה",
["4 תשרי"] = "עשרת ימי תשובה",
["5 תשרי"] = "עשרת ימי תשובה",
["6 תשרי"] = "עשרת ימי תשובה",
["7 תשרי"] = "עשרת ימי תשובה",
["8 תשרי"] = "עשרת ימי תשובה",
["9 תשרי"] = "יום כיפור", -- ערב יום כיפור, כי ביום כיפור עצמו אין חשיפה כמובן
["10 תשרי"] = "יום כיפור",
["15 תשרי"] = "סוכות",
["16 תשרי"] = "סוכות",
["17 תשרי"] = "סוכות",
["18 תשרי"] = "סוכות",
["19 תשרי"] = "סוכות",
["20 תשרי"] = "סוכות",
["21 תשרי"] = "סוכות",
["22 תשרי"] = "שמחת תורה",
["1 חשוון"] = "א חשוון",
["29 חשוון"] = "הסיגד",
["1 כסלו"] = "א כסלו",
["25 כסלו"] = "חנוכה",
["26 כסלו"] = "חנוכה",
["27 כסלו"] = "חנוכה",
["28 כסלו"] = "חנוכה",
["29 כסלו"] = "חנוכה",
["30 כסלו"] = "חנוכה",
["1 טבת"] = "חנוכה",
["2 טבת"] = "חנוכה",
["10 טבת"] = "צום עשרה בטבת",
["21 טבת"] = "יום הלשון העברית",
["1 שבט"] = "א שבט",
["15 שבט"] = "ט\"ו בשבט",
["1 חשוון"] = "א חשוון",
["1 אדר"] = "א אדר",
["13 אדר"] = "פורים",
["14 אדר"] = "פורים",
["15 אדר"] = "שושן פורים",
["1 אדר א"] = "א אדר", -- לשנים מעוברות
["13 אדר ב"] = "פורים",
["14 אדר ב"] = "פורים",
["15 אדר ב"] = "שושן פורים",
["1 ניסן"] = "א ניסן",
["15 ניסן"] = "פסח",
["16 ניסן"] = "פסח",
["17 ניסן"] = "פסח",
["18 ניסן"] = "פסח",
["19 ניסן"] = "פסח",
["20 ניסן"] = "פסח",
["21 ניסן"] = "פסח",
["26 ניסן"] = "יום השואה",
["1 אייר"] = "א אייר",
["2 אייר"] = "יום הזיכרון",
["3 אייר"] = "יום העצמאות",
["18 אייר"] = "ל\"ג בעומר",
["28 אייר"] = "יום ירושלים",
["1 סיוון"] = "א סיוון",
["6 סיוון"] = "שבועות",
["1 תמוז"] = "א תמוז",
["10 תמוז"] = "יום הולדת לוויקימילון",
["17 תמוז"] = "צום שבעה עשר בתמוז",
["1 אב"] = "א אב",
["9 אב"] = "תשעה באב",
["15 אב"] = "ט\"ו באב",
["1 אלול"] = "א אלול"
}
-- בדיקה לג' בטבת לסיום חנוכה
local function isHanukkah(year)
return mw.language.getContentLanguage():formatDate("xg", string.format("%d-12-30", year)) == "30 כסלו"
end
-- החזרת המועד
function p.getEvent(frame)
local hebrewDate = frame.args[1] -- למשל "15 ניסן"
if not hebrewDate then return "" end
if calendar[hebrewDate] then
return calendar[hebrewDate]
end
if hebrewDate == "3 טבת" then
local hebrewYear = tonumber(frame.args[2])
if hebrewYear and isHanukkah(hebrewYear) then
return "חנוכה"
end
end
return ""
end
-- טבלה אוטומטית
local month_order = {
["תשרי"]=1, ["חשוון"]=2, ["כסלו"]=3, ["טבת"]=4, ["שבט"]=5,
["אדר א"]=6, ["אדר"]=7, ["אדר ב"]=8, ["ניסן"]=9, ["אייר"]=10,
["סיון"]=11, ["תמוז"]=12, ["אב"]=13, ["אלול"]=14
}
function p.renderCalendarTable(frame)
local rows = {}
for date, event in pairs(calendar) do
-- תומך גם בחודשים עם רווחים כמו "אדר א"
local day_str, month = mw.ustring.match(date, "^(%d+)%s+(.*)$")
local day = tonumber(day_str)
local month_index = month_order[month]
-- רק אם הפענוח הצליח
if day and month_index then
table.insert(rows, {
day = day,
month = month,
month_index = month_index,
event = event
})
end
end
-- מיון לפי חודש ואז יום
table.sort(rows, function(a, b)
if a.month_index == b.month_index then
return (a.day or 0) < (b.day or 0)
else
return a.month_index < b.month_index
end
end)
-- בניית הטבלה
local result = '{| class="wikitable sortable"\n! יום !! חודש !! שם האירוע\n'
for _, row in ipairs(rows) do
result = result .. string.format("|-\n| %d || %s || %s\n", row.day, row.month, row.event)
end
result = result .. "|}"
return result
end
return p