Module:Ancient Olympiads
Appearance
![]() | This Lua module is used on approximately 2,700 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This module is used by Module:Year in various calendars to convert a year in the Julian calendar to the equivalent year of the ancient Greek era organized by Olympiads
-- This module implements {{Ancient Olympiads}}. It converts a year in the Gregorian
-- calendar to the equivalent year of the ancient Greek era organized by Olympiads.
local data = mw.loadData( 'Module:Ancient Olympiads/data' )
local lang = mw.language.getContentLanguage()
local p = {}
function p._main( inputYear )
-- Convert the input to an integer if possible. Return "N/A" if the input could
-- not be converted, or if the converted input is too big or too small.
inputYear = tonumber( inputYear )
if not inputYear or inputYear > tonumber( lang:formatDate( 'Y' ) ) then
return "''N/A''"
end
-- Find the length of the data.
-- We need the length of the data so that we can loop through it backwards.
-- Normally we can get the length of tables with the # operator, but this
-- doesn't work with mw.loadData, as mw.loadData uses a metatable, and the
-- # operator doesn't work for tables that use metatables.
local dataLength = 0
for i, t in ipairs( data ) do
dataLength = i
end
-- Find the year in the data page and display the output.
for i = dataLength, 1, -1 do
local t = data[i]
if inputYear >= t.year then
return string.format(
'%s, held in %d and won by %s.',
t.numberOl, t.year, t.winner
)
end
end
-- Our input year was less than the year of the first Olympiad.
return string.format(
'%d was before the [[776 BC|1st]] [[Olympiad]].',
inputYear
)
end
--I don't know how the debug console works. I'm testing this from Editing Module:Year in other calendars, now without the second function
return p