模块:Caps:修订间差异

来自Rizline中文维基
(创建页面,内容为“local getArgs = require('Module:Arguments').getArgs; local p = setmetatable({},{ __index = function (t, k) local rawFunc = t['_' .. k]; if rawFunc then local rtnFunc = function(frame) return rawFunc(getArgs(frame)) end rawset(t,k,rtnFunc) return rtnFunc; end return nil; end }) local function getCap(txt,color,bgcolor,padding,margin) -- 其实可以考虑…”)
 
无编辑摘要
第18行: 第18行:
     -- 其实可以考虑改成使用TemplateStyle。
     -- 其实可以考虑改成使用TemplateStyle。
     return string.format(
     return string.format(
         '<span style="text-align:center;display:inline-block;border-radius:1em;color:%s;background-color:%s;padding:0 %.2fem;margin:0 %.2fem;">%s</span>',
         '<span style="text-align:center;display:inline-block;border-radius:1em;color:%s;background-color:%s;padding:0 %.2fem;margin:0.1em %.2fem;">%s</span>',
         color or 'white',
         color or 'white',
         bgcolor or 'black',
         bgcolor or 'black',
第40行: 第40行:


function p._rank(args)
function p._rank(args)
     local RankCapList = {
     local CapList = {
         {'PERFECT','#FFD40B','Perfect','P'},
         {'PERFECT','#FFD40B','Perfect','P'},
         {'CLEAR','#61D8FF','Clear','C'},
         {'CLEAR','#61D8FF','Clear','C'},
第47行: 第47行:
     }
     }
     local name = args[1]
     local name = args[1]
     local l = searchByList(RankCapList,name,3);
     local l = searchByList(CapList,name,3);
     if l then
     if l then
         return getCap(l[1],'white',l[2],1,1);
         return getCap(l[1],'white',l[2],1,1);
     else error('找不到Rank"' .. name ..'"对应的信息!');end
     else error('找不到Rank"' .. name ..'"对应的信息!');end
end
function p._diff(args)
    local CapList = {
        {'EZ','#57E4C4','EZ','Eazy','E'},
        {'HD','#FDBA61','HD','Hard','H'},
        {'IN','#FE8661','IN','Insane','I'},
        {'AT','#4C364B','AT','AnoTher','A'},
      --{'Def','#53D6FF'}
    }
    local name = args[1]
    local l = searchByList(CapList,name,3) or {'Def','#53D6FF'};
    local diff = args[2];
    local str = l[1];
    if diff then str = str .. ' ' .. diff;end
    return getCap(str,'white',l[2],1,1);
end
end


return p;
return p;

2024年5月3日 (五) 19:15的版本

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

local getArgs = require('Module:Arguments').getArgs;

local p = setmetatable({},{
    __index = function (t, k)
        local rawFunc = t['_' .. k];
        if rawFunc then
            local rtnFunc = function(frame)
                return rawFunc(getArgs(frame))
            end
            rawset(t,k,rtnFunc)
            return rtnFunc;
        end
        return nil;
    end
})

local function getCap(txt,color,bgcolor,padding,margin)
    -- 其实可以考虑改成使用TemplateStyle。
    return string.format(
        '<span style="text-align:center;display:inline-block;border-radius:1em;color:%s;background-color:%s;padding:0 %.2fem;margin:0.1em %.2fem;">%s</span>',
        color or 'white',
        bgcolor or 'black',
        padding or 1,
        margin or 0.5,
        txt or '一串友好的文字'
    )
end

local toLowerCase = string.lower;
local function searchByList(table,str,i)
    i = i or 1;
    local lStr = toLowerCase(str)
    for _, t in ipairs(table) do
        for _i = i,#t do
            if toLowerCase(t[_i]) == lStr then return t;end
        end
    end
    return nil;
end

function p._rank(args)
    local CapList = {
        {'PERFECT','#FFD40B','Perfect','P'},
        {'CLEAR','#61D8FF','Clear','C'},
        {'NOT CLEAR','#CFCFCF','Not Clear','NC'},
        {'MOD PLAY','#CFCFCF','Mod Play','MP'}
    }
    local name = args[1]
    local l = searchByList(CapList,name,3);
    if l then
        return getCap(l[1],'white',l[2],1,1);
    else error('找不到Rank"' .. name ..'"对应的信息!');end
end

function p._diff(args)
    local CapList = {
        {'EZ','#57E4C4','EZ','Eazy','E'},
        {'HD','#FDBA61','HD','Hard','H'},
        {'IN','#FE8661','IN','Insane','I'},
        {'AT','#4C364B','AT','AnoTher','A'},
      --{'Def','#53D6FF'}
    }
    local name = args[1]
    local l = searchByList(CapList,name,3) or {'Def','#53D6FF'};
    local diff = args[2];

    local str = l[1];
    if diff then str = str .. ' ' .. diff;end
    return getCap(str,'white',l[2],1,1);
end

return p;