local DateTime = require("Module:Sandbox/DixonD/Datetime");
local Math = require("Module:Math");
local z = {}
-- utility functions
local function getArgs(frame)
local args = frame.args;
-- if there are any arguments, then assume that we've got proper ones
for k,v in pairs(args) do
return args
end
-- otherwise, return args from the parent
local parent = frame:getParent();
return parent.args;
end
--template implementations
-- [[Template:JULIANDAY]]
function z.julianDay(frame)
local args = getArgs(frame);
return DateTime.julianDay(Math._cleanNumber(frame, args[1]),
Math._cleanNumber(frame, args[2]), Math._cleanNumber(frame, args[3]),
Math._cleanNumber(frame, args[4]), Math._cleanNumber(frame, args[5]),
Math._cleanNumber(frame, args[6]), 'g');
end
-- [[Template:JULIANDAY.YEAR]]
function z.yearOfJulianDay(frame)
local args = getArgs(frame);
return DateTime.yearOfJulianDay(Math._cleanNumber(frame, args[1]), 'g');
end
-- [[Template:Gregorian serial date]]
function z.gregorianSerialDate(frame)
local args = getArgs(frame);
local julianDay = DateTime.julianDay(Math._cleanNumber(frame, args.year),
Math._cleanNumber(frame, args.month),
Math._cleanNumber(frame, args.day), nil, nil, nil, 'g');
return julianDay - 1721425;
end
return z