Module:CHUNITHM Difficulty
Documentation for this module may be created at Module:CHUNITHM Difficulty/doc
local p={}
local function VerToNum(args)
return tonumber(mw.text.trim(mw.getCurrentFrame():expandTemplate{title='VerToNum',args=args}))
end
function p.chunithm_difficulty_multi(frame)
args=frame:getParent().args
local version_range_borders = {4,13,18}
local result = "CHUNITHM "
if VerToNum({"chunithm", args[1]}) < version_range_borders[1] then
result = result .. "to AIR difficulty rated from 1 to 13+, "
else
result = result .. "difficulty rated "
end
-- since #args can't be used, and there's no removals in air+ and older anyway, i'm removing the period, and moving the comma to the above branch
-- although there's only two ranges, the loops below shall remain to be future-proof
local i = 0
local in_range = {}
for i = 1, #version_range_borders do
in_range[i] = false
end
local ranges_text = {
"1 to 14 from AIR PLUS to PARADISE LOST",
"1 to 15 from NEW to LUMINOUS",
"1 to 15+ from LUMINOUS 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({"chunithm", args[i]})
endvernum = VerToNum({"chunithm", 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({"chunithm", 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:CHUNITHM Songs]]"
if endvernum ~= 99 then
result = result .. "[[Category:CHUNITHM Removed Songs]]"
end
return result
end
return p