Module:Infobox/dates/sandbox

From No Subject
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

local getArgs = require('Module:Arguments').getArgs local p = {}

function p.dates(frame) local returnval; local args = getArgs(frame);

if table.getn(args) < 2 then if args['1'] == nil and args['2'] == nil then return ; elseif args['1'] == nil then return args['2']; elseif args['2'] == nil then return args['1']; end end

args['1'] = args['1']:gsub(" "," "); args['2'] = args['2']:gsub(" "," ");

local dmy = false; local pr1, m1, d1, y1, su1 = string.match(args['1'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)'); local pr2, m2, d2, y2, su2 = string.match(args['2'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)'); if y1 == nil then dmy = true; pr1, d1, m1, y1, su1 = string.match(args['1'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)'); pr2, d2, m2, y2, su2 = string.match(args['2'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)'); end

local dash = ' – '; if y1 ~= nil and y2 ~= nil then su1 = su1 or ; su2 = su2 or ;

local MONTHS = {January=1, February=2, March=3, April=4, May=5, June=6, July=7, August=8, September=9, October=10, November=11, December=12}; local diff = os.time({year=y2,month=MONTHS[m2],day=d2,hour=0,min=0,sec=0})-os.time({year=y1,month=MONTHS[m1],day=d1,hour=0,min=0,sec=0});

if diff < 0 then returnval = 'Invalid date range'; else if y1 == y2 then if dmy == false then returnval = pr1..m1..' '..d1..su1..dash..pr2..m2..' '..d2..', '..y2..su2; else returnval = pr1..d1..' '..m1..su1..dash..pr2..d2..' '..m2..' '..y2..su2; end else if dmy == false then returnval = pr1..m1..' '..d1..', '..y1..su1..dash..pr2..m2..' '..d2..', '..y2..su2; else returnval = pr1..d1..' '..m1..' '..y1..su1..dash..pr2..d2..' '..m2..' '..y2..su2; end end end else returnval = args['1']..dash..args['2']; end

return returnval; end

return p