Módulo:Version
local p = {} local releases = {}
-- HEY YOU, UPDATE THESE releases["1.28.0"] = "2016-11-28" releases["1.27.1"] = "2016-08-22" releases["1.23.15"] = "2016-08-22"
-- Is there a beta branch that isn't a proper release yet? p.isthereabeta = false -- OKAY YOU CAN STOP NOW
-- Iterate in reverse -- from http://lua-users.org/wiki/IteratorsTutorial function ripairs(t)
local function ripairs_it(t,i) i=i-1 local v=t[i] if v==nil then return v end return i,v end return ripairs_it, t, #t+1
end
p.releases = releases
-- get trimmed version like "1.XX" function p.branch( version ) return string.sub(version, 0,4) end
-- git branch like REL1_XX function p.git_branch( version ) return "REL1_" .. string.sub(p.branch(version), 3) end
function p.islts( version ) local branch = p.branch( version ) -- yeah don't do this return branch == "1.19" or branch == "1.23" or branch == "1.27" end
function p.get( frame ) return p.version( frame.args[1], frame.args[2] ) end
-- main function -- release: stable, legacy, legacylts, lts, alpha -- format: version, branch, git, date function p.version( release, format ) local versions = {} for k,v in pairs(p.releases) do table.insert(versions,k) end table.sort(versions) --mw.logObject(versions) --mw.log(#versions) local version = "0.0.0" if release == "stable" then version = versions[#versions] elseif release == "legacy" then version = versions[#versions-1] elseif release == "lts" then for i,v in ipairs(versions) do -- this might not be right. if p.islts(v) then version = v end end elseif release == "legacylts" then -- the oldest LTS version is the legacy LTS version. -- (e.g. when there are both 1.23.x and 1.27.x releases, choose 1.23.x) for i,v in ripairs(versions) do if p.islts(v) then version = v end end elseif release == "alpha" then -- alpha only works with "branch" output
version = tonumber(p.branch(versions[#versions]))+0.01 if p.isthereabeta then version = version + 0.01 end version = tostring(version) end
local out = "WRONG" if format == "version" then out = version elseif format == "branch" then out = p.branch( version ) elseif format == "git" then out = p.git_branch( version ) elseif format == "date" then out = p.releases[version] end
return out end
return p