Modul:Is year
A modult a Modul:Is year/doc lapon tudod dokumentálni
p = {}
local function trim(s)
return s:match'^%s*(.*%S)' or ''
end -- trim
local function decade_suffix(year)
local decadeDigit = year:reverse():sub(2,2)
if decadeDigit == nil then decadeDigit = "" end -- managing year 9 BCE - 9 CE
local retValue = ""
if decadeDigit == "" then
retValue = "-ás"
elseif string.find("14579",decadeDigit) then
retValue = "-es"
elseif string.find("02368", decadeDigit) then
retValue = "-as"
else
retValue = nil --should not happen
end -- switch
return retValue
end -- decade_suffix
function p.check(params)
local args = require( 'Modul:Arguments' ).getArgs(params)
local yeartext = args[1] or ""
local mode = args[2] or ""
local preChrist = false
if yeartext:sub(1,4):upper() == "I.E." then
preChrist = true
yearspart = trim(yeartext:sub(5))
elseif yeartext:sub(1,5):upper() == "KR.E." then
preChrist = true
yearspart = trim(yeartext:sub(6))
elseif yeartext:sub(1,1) == '-' then
preChrist = true
yearspart = trim(yeartext:sub(2))
elseif yeartext:sub(1,5):upper() == "I.SZ." then
yearspart = trim(yeartext:sub(6))
elseif yeartext:sub(1,5):upper() == "KR.U." then
yearspart = trim(yeartext:sub(6))
else
yearspart = yeartext
end
local yearnums = yearspart:match("(%d*)[%s\.]*$") or ""
local bcFlag = (preChrist) and "i.e. " or ""
local retValue = (mode == "3") and "0" or "FALSE"
if mode == "1" then
retValue = bcFlag..yearnums:gsub("(%d*)(%d)","%1").."0"..decade_suffix(yearnums)
elseif mode == "2" then
retValue = bcFlag..math.floor(yearnums/100).."."
elseif mode == "3" then
retValue = (yearnums > "") and "1" or "0"
elseif mode == "4" then
retValue = (preChrist) and "-1" or "1"
else
retValue = bcFlag..yearnums
end
return retValue
end
return p