Module:UpdateNumber

local p = {} local versionData = mw.loadData( 'Module:UpdateNumber/data' )

local function currentUpdate local pageName = mw.title.getCurrentTitle.text

if versionData[pageName] then return pageName end local updateNo = tonumber(pageName:match("^Update (%d+)"))

local versionNo = "" if updateNo then for k, v in pairs(versionData) do           if v[3] and updateNo == v[3] then versionNo = k               break end end end return versionNo end

local function prevUpdate(curVersion) local curDate = nil

if versionData[curVersion] then curDate = versionData[curVersion][2] end

local prevDate = 0 local prevVer = ""

if curDate then for k, v in pairs(versionData) do           if v[2] and v[2] < curDate and v[2] > prevDate then prevDate = v[2] prevVer = k           end end end return prevVer end

local function nextUpdate(curVersion) local curDate = nil

if versionData[curVersion] then curDate = versionData[curVersion][2] end

local nextDate = 99999999 local nextVer = ""

if curDate then for k, v in pairs(versionData) do           if v[2] and v[2] > curDate and v[2] < nextDate then nextDate = v[2] nextVer = k           end end end return nextVer end

local function strDate(numDate) local months = {"January ", "February ", "March ", "April ", "May ", "June ", "July ", "August ", "September ", "October ", "November ", "December "} local day = math.min(math.fmod(numDate, 100), 31)

local idd = math.fmod(day, 10) local nth = (idd==1 and day~=11 and "st ") or (idd==2 and day~=12 and "nd ") or (idd==3 and day~=13 and "rd ") or "th "

local year = math.floor(numDate / 100)

local mon = math.min(math.fmod(year, 100), 12)

year = math.floor(year/100)

return (day .. nth .. months[mon] .. year) end

function p.getVersion(frame) local tArgs

if frame == mw.getCurrentFrame then fParent = frame:getParent tArgs = fParent.args

if (fParent.args[1]) then tArgs = fParent.args else tArgs = frame.args end else tArgs = frame end

local versionNo = tArgs[1] or "" local outType  = tArgs[2] or "" local txtOnly  = (tArgs[3] and tArgs[3] ~= "")

if versionNo == "" then versionNo = currentUpdate end

local inclDate = false

if outType == "D" then inclDate = true elseif outType == "P" then -- output previous version versionNo = prevUpdate(versionNo) elseif outType == "N" then -- output next version versionNo = nextUpdate(versionNo) end

local versionText

if versionData[versionNo] then versionText = versionData[versionNo][1] .. " Update"

if not txtOnly then versionText = "" .. versionText .. "" end

if inclDate then versionText = versionText .. " on " .. strDate(versionData[versionNo][2]) end else versionText = "Unknown Version" end

return versionText end return p