モジュール:Version
提供: ひつじ小屋別館2代目
2016年7月7日 (木) 04:04時点におけるBDavis (WMF) (トーク)による版 (Add a "legacylts" version selector to get the oldest LTS release)
このモジュールについての説明文ページを モジュール:Version/doc に作成できます
local p = {}
local releases = {}
-- HEY YOU, UPDATE THESE
releases["1.27.0"] = "2016-06-28"
releases["1.26.3"] = "2016-05-20"
releases["1.23.14"] = "2016-05-20"
-- 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