לדלג לתוכן

יחידה:לוח מועדים

מתוך ויקימילון, מיזם רב לשוני ליצירת מילון חופשי שיתופי.

ניתן ליצור תיעוד על היחידה הזאת בדף יחידה:לוח מועדים/תיעוד

-- טבלת מועדים קבועים לפי תאריך עברי
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