-- This module implements {{Ancient Egypt era}}. It converts a year in the Gregorian-- calendar to the equivalent year of the ancient Egyptian era organized by dynasties and kings.localdata=mw.loadData('Module:Ancient Egypt era/data')locallang=mw.language.getContentLanguage()localp={}functionp._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)ifnotinputYearorinputYear>tonumber(lang:formatDate('Y'))thenreturn"''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.localdataLength=0fori,tinipairs(data)dodataLength=iend-- Find the year in the data page and display the output.fori=dataLength,1,-1dolocalt=data[i]ifinputYear-1>=t.dynstartandinputYear-1<=t.dynendthen-- year of the dynasty, test with = p._main( -495 )-- The input year in the calendar is one after the expected (-775 for the year 776 BC). This is why all values need to be corrected by 1. returnstring.format('[[%s|%s]] [[List of ancient Egyptian dynasties|dynasty]], %d',t.dynlink,t.dynasty,inputYear-t.dynstart)endendendfunctionp.main(frame)-- If you only want to run this module from another Lua module, you can get-- rid of this function entirely. This function is only used if you want to-- run this individual module from a template.localargs=require('Module:Arguments').getArgs(frame,{parentOnly=true})returnp._main(args[1])endreturnp