置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:虚拟歌手外语排行榜

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
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