Module:maimai Difficulty: Difference between revisions
Jump to navigation
Jump to search
imported>Jack980517 No edit summary |
m (Protected "Module:maimai Difficulty": structural page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))) |
||
(4 intermediate revisions by one other user not shown) | |||
Line 6: | Line 6: | ||
function p.maimai_difficulty_multi(frame) | function p.maimai_difficulty_multi(frame) | ||
args=frame:getParent().args | args=frame:getParent().args | ||
local version_range_borders = {3, 9, 13, 15} | |||
local result = "maimai " | local result = "maimai " | ||
if VerToNum({"maimai", args[1]}) < | if VerToNum({"maimai", args[1]}) < version_range_borders[1] then | ||
result = result .. "to PLUS difficulty rated from 1 to 10" | result = result .. "to PLUS difficulty rated from 1 to 10" | ||
else | else | ||
result = result .. "difficulty rated " | result = result .. "difficulty rated " | ||
end | end | ||
if VerToNum({"maimai", args[2]}) < | if args[2] ~= nil and VerToNum({"maimai", args[2]}) < version_range_borders[1] then | ||
-- ugly hack; #args can't be used, and since there's (currently) no songs removed in _~_+ and revived later, the only use case is 舞萌 songs. | -- ugly hack; #args can't be used, and since there's (currently) no songs removed in _~_+ and revived later, the only use case is 舞萌 songs. | ||
result = result .. "." | result = result .. "." | ||
elseif VerToNum({"maimai", args[1]}) < | elseif VerToNum({"maimai", args[1]}) < version_range_borders[1] then | ||
result = result .. ", " | result = result .. ", " | ||
end | end | ||
local i = 0 | local i = 0 | ||
local in_range = {} | local in_range = {} | ||
Line 32: | Line 31: | ||
} | } | ||
local j = 1 | local j = 1 | ||
for i = 1, | local endvernum = nil | ||
for i = 1, 99, 2 do -- again, ugly hack | |||
local | if args[i] == nil then break end | ||
local startvernum = VerToNum({"maimai", args[i]}) | |||
endvernum = VerToNum({"maimai", args[i + 1]}) | |||
if endvernum == nil then | |||
endvernum = 99 | |||
endvernum = | |||
end | end | ||
for j = 1, #version_range_borders do | for j = 1, #version_range_borders do | ||
Line 60: | Line 55: | ||
end | end | ||
end | end | ||
if #included_ranges == 1 then -- first range special case | if #included_ranges == 1 and VerToNum({"maimai", args[1]}) < version_range_borders[1] then -- first range special case | ||
result = result .. "and " .. ranges_text[included_ranges[1]] .. "." | result = result .. "and " .. ranges_text[included_ranges[1]] .. "." | ||
-- print(result) | -- print(result) | ||
Line 76: | Line 71: | ||
end | end | ||
result = result .. "<br>[[Category:Songs]][[Category:maimai Songs]]" | result = result .. "<br>[[Category:Songs]][[Category:maimai Songs]]" | ||
if | if endvernum ~= 99 then | ||
result = result .. "[[Category:maimai Removed Songs]]" | result = result .. "[[Category:maimai Removed Songs]]" | ||
end | end |
Latest revision as of 00:08, 24 June 2023
Documentation for this module may be created at Module:maimai Difficulty/doc
local p={}
local function VerToNum(args)
return tonumber(mw.text.trim(mw.getCurrentFrame():expandTemplate{title='VerToNum',args=args}))
end
function p.maimai_difficulty_multi(frame)
args=frame:getParent().args
local version_range_borders = {3, 9, 13, 15}
local result = "maimai "
if VerToNum({"maimai", args[1]}) < version_range_borders[1] then
result = result .. "to PLUS difficulty rated from 1 to 10"
else
result = result .. "difficulty rated "
end
if args[2] ~= nil and VerToNum({"maimai", args[2]}) < version_range_borders[1] then
-- ugly hack; #args can't be used, and since there's (currently) no songs removed in _~_+ and revived later, the only use case is 舞萌 songs.
result = result .. "."
elseif VerToNum({"maimai", args[1]}) < version_range_borders[1] then
result = result .. ", "
end
local i = 0
local in_range = {}
for i = 1, #version_range_borders do
in_range[i] = false
end
local ranges_text = {
"1 to 12 from GreeN to PiNK PLUS",
"1 to 13 from MURASAKi to MiLK PLUS",
"1 to 14 from FiNALE to でらっくす",
"1 to 15 from でらっくす PLUS onwards"
}
local j = 1
local endvernum = nil
for i = 1, 99, 2 do -- again, ugly hack
if args[i] == nil then break end
local startvernum = VerToNum({"maimai", args[i]})
endvernum = VerToNum({"maimai", args[i + 1]})
if endvernum == nil then
endvernum = 99
end
for j = 1, #version_range_borders do
local cond = true
if j + 1 <= #version_range_borders then
cond = startvernum < version_range_borders[j + 1]
end
if endvernum >= version_range_borders[j] and cond then
in_range[j] = true
end
end
end
local included_ranges = {}
for j = 1, #in_range do
if in_range[j] then
table.insert(included_ranges, j)
end
end
if #included_ranges == 1 and VerToNum({"maimai", args[1]}) < version_range_borders[1] then -- first range special case
result = result .. "and " .. ranges_text[included_ranges[1]] .. "."
-- print(result)
else
for j = 1, #included_ranges do
result = result .. ranges_text[included_ranges[j]]
if j == #included_ranges then -- last range
result = result .. "."
elseif j == #included_ranges - 1 then -- second to last range
result = result .. ", and "
else
result = result .. ", "
end
end
end
result = result .. "<br>[[Category:Songs]][[Category:maimai Songs]]"
if endvernum ~= 99 then
result = result .. "[[Category:maimai Removed Songs]]"
end
return result
end
return p