Module:Deathage: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
local p = {}
local p = {}
function p.formatDate(frame)
function p.formatDate(frame)
     local day = frame.args[1] or 1
     local day = tonumber(frame.args[4]) or 1
     local month = frame.args[2] or 1
     local month = tonumber(frame.args[5]) or 1
     local year = frame.args[3] or 1970
     local year = tonumber(frame.args[6]) or 1970
     return mw.getContentLanguage():formatDate('j F Y', string.format('%d-%d-%d', year, month, day))
     return mw.getContentLanguage():formatDate('j F Y', string.format('%d-%d-%d', year, month, day))
end
end
function p.calculateAge(frame)
function p.calculateAge(frame)
     local day = tonumber(frame.args[1]) or 1
     local birthDay = tonumber(frame.args[1]) or 1
     local month = tonumber(frame.args[2]) or 1
     local birthMonth = tonumber(frame.args[2]) or 1
     local year = tonumber(frame.args[3]) or 1970
     local birthYear = tonumber(frame.args[3]) or 1970
     local currentDay = tonumber(mw.getCurrentFrame():callParserFunction('#time', 'j'))
     local deathDay = tonumber(frame.args[4]) or 1
     local currentMonth = tonumber(mw.getCurrentFrame():callParserFunction('#time', 'n'))
     local deathMonth = tonumber(frame.args[5]) or 1
     local currentYear = tonumber(mw.getCurrentFrame():callParserFunction('#time', 'Y'))
     local deathYear = tonumber(frame.args[6]) or 1970
     local age = currentYear - year
 
     if (currentMonth < month) or (currentMonth == month and currentDay < day) then
     local age = deathYear - birthYear
     if (deathMonth < birthMonth) or (deathMonth == birthMonth and deathDay < birthDay) then
         age = age - 1
         age = age - 1
     end
     end
     return age
     return age
end
end
function p.displayDateWithAge(frame)
function p.displayDateWithAge(frame)
     local date = p.formatDate(frame)
     local date = p.formatDate(frame)
Line 24: Line 29:
     return string.format('%s (aged %d)', date, age)
     return string.format('%s (aged %d)', date, age)
end
end
return p
return p