Module:ChartConstantDetail

来自Arcaea中文维基
DrLee lihr讨论 | 贡献2022年7月14日 (四) 15:34的版本 (补洞 616 我谢谢你啊 怎么想的在曲名里塞个管道符)

可在Module:ChartConstantDetail/doc创建此模块的帮助文档

local p = {}
local chartConstantList = require("Module:LoadJson").ChartConstant()
local songlist = require("Module:LoadJson").Songlist()


local specialSongNameConverter             = {}
specialSongNameConverter["#1f1e33"]        ="#1f1e33"
specialSongNameConverter["AI[UE]OON"]      ="AI[UE]OON"
specialSongNameConverter["Last | Eternity"]="Last"

local specialSongNameDisplayConverter             = {}
specialSongNameDisplayConverter["Last | Eternity"]="Last \| Eternity"

local function constantFormat (a)
	if not(a) then
        return "<span class=\"old-constant\"> - </span>"
    end
    if a["old"] == true then
        return "<span class=\"old-constant\">" .. string.format("%.1f", a["constant"]) .. "</span>"
    else
        return "<span class=\"new-constant\">" .. string.format("%.1f", a["constant"]) .. "</span>"
    end
end

function p.main()

    local finText =
[[{| class="wikitable sortable" style="text-align:center"
|-
! style="position:-webkit-sticky;position:sticky;top:0px;" |曲目
! style="color:#1082be;position:-webkit-sticky;position:sticky;top:0px;" |PST
! style="color:#648c3c;position:-webkit-sticky;position:sticky;top:0px;" |PRS
! style="color:#50194b;position:-webkit-sticky;position:sticky;top:0px;" |FTR
! style="color:#ff0000;position:-webkit-sticky;position:sticky;top:0px;" |BYD
]]
    
    local constantList = {}
    for i, k in pairs(chartConstantList) do
        local realName = ""
        for n, m in pairs(songlist["songs"]) do
            if m["id"] == i then
                realName = m["title_localized"]["en"]
                break
            end
        end
        table.insert(constantList, {k, realName})
    end

    table.sort(constantList, function (a, b) 
    	if (not a[1][3]) or (not b[1][3]) then
    		return a[2] > b[2] -- 暂时补洞,解决方案再讨论
    	end
    	return a[1][3]["constant"]>b[1][3]["constant"] end)

    

    for i, k in pairs(constantList) do
        
        if specialSongNameConverter[k[2]] then
        	if specialSongNameDisplayConverter[k[2]] then
        		finText = finText .. "|-\n|[[" .. specialSongNameConverter[k[2]] 
                	.. "|" .. specialSongNameDisplayConverter[k[2]] .. "]]"
            else
            	finText = finText .. "|-\n|[[" .. specialSongNameConverter[k[2]] 
                	.. "|" .. k[2] .. "]]"
            end
        else
            finText = finText .. "|-\n|[[" .. k[2] .. "]]"
        end        
        finText = finText .."||" 
            .. constantFormat(k[1][1]) ..  "||" 
            .. constantFormat(k[1][2]) ..  "||" 
            .. constantFormat(k[1][3]) ..  "||"
        if k[1][4] then
            finText = finText .. constantFormat(k[1][4])
        end
        finText = finText .. "\n" 
    end

    finText = finText .. "|}"
    return finText
end

return p