Module:Historical

From Empire of Dragons
Revision as of 08:11, 5 June 2024 by Oberoten (talk | contribs)
Jump to navigation Jump to search

Datafiles are in Historical/country


{{#invoke:Historical|getEvents|1990|[country]}}
{{#invoke:Historical|getReign|1950|[country]}}


In the year 1986 :Prime Minister Olof Palme is assassinated.

Swedish Kings : King Gustav V dies.
King Gustav VI Adolf reigns.
Currently reigning: King Gustav VI Adolf (since 1950)
Reign ends: 1973

In Norway
King Haakon VII reigns.
Currently reigning: King Haakon VII (since 1905)
Reign ends: 1957

In France
King Louis XV reigns.
Currently reigning: King Louis XV (since 1715)
Reign ends: 1774

In Spain
King Juan Carlos I abdicates, King Felipe VI ascends the throne.
King Felipe VI reigns.
Currently reigning: King Felipe VI (since 2014)
In the year 2014 :King Juan Carlos I abdicates, King Felipe VI ascends the throne.

In England
The Cuban Missile Crisis occurs.
The Commonwealth Immigrants Act is passed.
The Beatles release their first single, 'Love Me Do'.
The James Bond film series begins with 'Dr. No'.
Queen Elizabeth II reigns.
Currently reigning: Queen Elizabeth II (since 1952)
Reign ends: 2022
In the year 1962 :
The Cuban Missile Crisis occurs.
The Commonwealth Immigrants Act is passed.
The Beatles release their first single, 'Love Me Do'.
The James Bond film series begins with 'Dr. No'.


local p = {}

-- Function to load the data from the subpage
local function loadData(country)
    local success, data = pcall(function()
        return mw.loadData('Module:Historical/' .. country)
    end)
    if success then
        return data
    else
        return nil
    end
end

-- Main function to be invoked
function p.getEvents(frame)
    local year = tonumber(frame.args[1])
    if not year then
        return "No valid year specified."
    end
    
    local country = frame.args[2] or 'sweden'
    local data = loadData(country)
    if data then
        local events = {}
        for _, event in ipairs(data) do
            if event.year == year then
                table.insert(events, event.event)
            end
        end
        if #events > 0 then
            return table.concat(events, '<br>')
        else
            return "No events found for the year " .. year .. "."
        end
    else
        return "No data found for the specified country."
    end
end


function p.getReign(frame)
    
    local year = tonumber(frame.args[1])
    if not year then
        return "No valid year specified."
    end
    
    local country = frame.args[2] or 'swedishmonarchs'
    local data = loadData(country)
    if data then
        local events = {}
        local reigning = nil

        for _, entry in ipairs(data) do
            if entry.year == year then
                if entry.event then
                    table.insert(events, entry.event)
                end
                if entry.reign_start and entry.reign_end and year >= entry.reign_start and year <= entry.reign_end then
                    reigning = entry
                elseif entry.reign_start and not entry.reign_end and year >= entry.reign_start then
                    reigning = entry
                end
            end
            if entry.reign_start and entry.reign_end and year >= entry.reign_start and year <= entry.reign_end then
                reigning = entry
            elseif entry.reign_start and not entry.reign_end and year >= entry.reign_start then
                reigning = entry
            end
        end

        if reigning then
            table.insert(events, string.format("%s reigns.", reigning.king or reigning.queen))
            table.insert(events, string.format("Currently reigning: %s (since %d)", reigning.king or reigning.queen, reigning.reign_start))
            if reigning.reign_end then
                table.insert(events, string.format("Reign ends: %d", reigning.reign_end))
            end
        end

        if #events > 0 then
            return table.concat(events, '<br>')
        else
            return "No events found for the year " .. year .. " in " .. country .. "."
        end
    else
        return "No data found for the specified country: " .. country .. "."
    end
end

return p