Module:Sandbox/DixonD/Datetime

This is an old revision of this page, as edited by DixonD (talk | contribs) at 18:28, 18 April 2013. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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