local p =
local month_names =
local function d_m_y(day, month, year) year = tonumber(year) day = tonumber(day) month = tonumber(month) -- Inverts day by year, if the date format is xxxx/xx/xx if (day and day > 100) then day, year = year, day end
-- Adds two thousand if the date entered is two digits if (year and year < 100) then year = year + 2000 end
-- Inverts day by month, if the date format is month/day/year if (month and (month > 12 and month < 32)) then day, month = month, day end
-- A few pages had a non-existent index error for the month if (month and (month > 12 or month < 1)) then month = nil end
if (day and month and year) ~= nil then return month_names[month] .. " " .. day .. ", " .. year end
return nilend
local function m_y(month, year) year = tonumber(year) month = tonumber(month) -- Returns nil if none of the numbers are greater than 1000 if not year or not month or (year < 1000 and month < 1000) then return nil end -- Inverts month to year, if the date format is year/month if month > 1000 then month, year = year, month end -- A few pages had a non-existent index error for the month if month > 12 or month < 1 then return nil end
if (month and year) ~= nil then return month_names[month] .. " " .. year end
return nilend
function p.main(frame) local date = frame.args[1] local converted local day, month, year = string.match(date, "^(%d+)[/%.%-](%d+)[/%.%-](%d+)$") if day then converted = d_m_y(day, month, year) else month, year = string.match(date, "^(%d+)[/%.%-](%d+)$") converted = m_y(month, year) end return converted or dateend
return p