Module:Sandbox/DixonD/DateTemplates

This is an old revision of this page, as edited by DixonD (talk | contribs) at 20:14, 19 April 2013. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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 #args == 0 then
        local parent = frame:getParent();
        args = parent.args;
    end
    return 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