Module:ChartConstantSingle

来自Arcaea中文维基
DrLee lihr讨论 | 贡献2022年7月21日 (四) 22:46的版本 (fix)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

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

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


function p.main(frame)
    local args = getArgs(frame)
    local songName = args[1]
    local m

    -- 这里这个逻辑是优先进行id匹配,以区分两个 Quon   —— DrLee_lihr
    for i, k in pairs(songlist["songs"]) do
    	if k["id"] == songName then
    		m = chartConstantList[k["id"]]
    		break
    	end
    end

    if not(m) then
        for i, k in pairs(songlist["songs"]) do    
            if k["title_localized"]["en"] == songName then
                m = chartConstantList[k["id"]]
                break
            end
        end
    end

    if not m then
        error("song not found")
    end

    local function constantFormat (a)
        if not(a) then
            return "<span style=\"font-weight:lighter; color:silver; font-style:italic;\"> - </span>"
        end
        if a["old"] == true then
            return "<span style=\"font-weight:lighter; color:silver; font-style:italic;\">" .. string.format("%.1f", a["constant"]) .. "</span>"
        else
            return string.format("%.1f", a["constant"])
        end
    end
    local arguments = {
        PST = constantFormat(m[1]),
        PRS = constantFormat(m[2]),
        FTR = constantFormat(m[3]),
    }
    if m[4] then arguments["BYD"] = constantFormat(m[4]) end
    return mw.getCurrentFrame():expandTemplate { title = '曲目定数', args = arguments }
end


return p