模組:Ancient Egypt kings
外观
您可能想要创建本Scribunto模块的文档。 编者可以在本模块的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。本模块的子页面。 |
-- This module implements {{Ancient Egypt kings}}. It converts a year in the Gregorian
-- calendar to the equivalent year of the ancient Egyptian era organized by pharaohs and kings.
local data = mw.loadData( 'Module:Ancient Egypt kings/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 - 1 >= t.rulerstart and inputYear - 1 <= t.rulerend then
-- 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.
return string.format(
'[[%s]], %d',
t.ruler, inputYear - t.rulerstart
)
end
end
end
function p.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.
local args = require( 'Module:Arguments' ).getArgs( frame, {
parentOnly = true
} )
return p._main( args[ 1 ] )
end
return p