Module:虚拟歌手外语排行榜
跳到导航
跳到搜索
local p = {} --提供给模板 local f = {} --内部使用 function f.split(inputstr, sep) if sep == nil then sep = "%s" -- 如果没有提供分隔符,则默认为空格 else sep = mw.ustring.gsub(sep, '([%%%(%)%.%+%-%*%?%[%]%^%$])', '%%%1') -- 转义分隔符中的特殊字符 end local t = {} for str in mw.text.gsplit(inputstr, sep) do str = mw.ustring.gsub(str, '^%s*(.-)%s*$', '%1') -- 去除前后空白 if str ~= "" then -- 只插入非空字符串 table.insert(t, str) end end return t -- 返回分割后的结果表 end function p.color( frame ) local vocals=f.split(frame.args[1], "、") local count = #vocals if count == 1 then local color = frame:expandTemplate{ title = "Vocalist_colors", args = { vocals[1] } } return "#" .. color else local text = "linear-gradient(" for i,v in pairs(vocals) do local color = frame:expandTemplate{ title = "Vocalist_colors", args = { v } } text = text .. "#" .. color .. " " .. (100 / count) * (i - 1) .. "%, " .. "#" .. color .. " " .. (100 / count) * i .. "%, " end text = string.sub(text, 1, -3) .. ")" return text end end function p.author(frame) local authors = f.split(frame.args[1], "、") local text = "" for i,v in pairs(authors) do if mw.ustring.match(v, "[あ-んア-ン]") then text = text .. frame:preprocess( "{{lj|[[" ..v .. "]]}}") .. "、" else text = text .. "[[" ..v .. "]]" .. "、" end end text = mw.ustring.sub(text, 1, -2) return text end return p