Module:Historical: Difference between revisions

From Empire of Dragons
Jump to navigation Jump to search
No edit summary
No edit summary
Line 41: Line 41:


function p.getReign(frame)
function p.getReign(frame)
   
     local year = tonumber(frame.args[1])
     local year = tonumber(frame.args[1])
     if not year then
     if not year then
Line 50: Line 51:
     if data then
     if data then
         local events = {}
         local events = {}
         for _, event in ipairs(data) do
        local reigning = nil
             if event.year == year then
 
                 table.insert(events, event.event)
         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
             end
             if event.reign_start and event.reign_end and year >= event.reign_start and year <= event.reign_end then
             if entry.reign_start and entry.reign_end and year >= entry.reign_start and year <= entry.reign_end then
                 table.insert(events, event.event)
                 reigning = entry
             elseif event.reign_start and not event.reign_end and year >= event.reign_start then
             elseif entry.reign_start and not entry.reign_end and year >= entry.reign_start then
                 table.insert(events, event.event)
                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
         end
         end
         if #events > 0 then
         if #events > 0 then
             return table.concat(events, '<br>')
             return table.concat(events, '<br>')

Revision as of 08:11, 5 June 2024

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