local Math = require("Module:Math");
local z = {}
local calendars = {
g = require("Module:Sandbox/DixonD/Datetime/Gregorian"),
j = require("Module:Sandbox/DixonD/Datetime/Julian")
};
local defaultCalendar = 'g';
-- utility functions
local function selectCalendar(mode)
local calendar = calendars[mode];
return calendar == nil and calendars[defaultCalendar] or calendar;
end
local function getArgs(frame)
local args = frame.args;
if args[1] == nil then
local parent = frame:getParent();
args = parent.args;
end
return args
end
-- main functions
function z.julian_day(frame)
local args = getArgs(frame);
local calendar = selectCalendar(args.mode);
local frame = mw.getCurrentFrame();
return calendar.julian_day(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]));
end
return z