2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

Module:Sandbox/BearBin/GalgameStaffList

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索
Template-info.svg 模块文档  [创建] [刷新]
local getArgs = require("Module:Arguments").getArgs
local p = {}

-- 将文本解析为链接列表
-- @param text 使用“ , ”划分的文本
function StaffLinks(text)
    local splitedTable = mw.text.split(text, " , ")
    return '<span lang="ja">-{[[' .. table.concat(splitedTable, "]]、[[") .. "]]}-</span>"
end

-- 将声优文本解析为链接列表
-- @param text 使用“-”划分的多对“角色-声优”
function CVLinks(text)
    local wikitext = {}
    local pos = 0
    for st, sp in function()
        return string.find(text, " , ", pos, true)
    end do
        local subText = mw.text.split(string.sub(text, pos, st - 1), "-")
        table.insert(wikitext, table.concat(subText, "]]:[["))
        pos = sp + 1
    end
    table.insert(wikitext, table.concat(mw.text.split(string.sub(text, pos), "-"), "]]:[["))
    return "**<span lang=\"ja\">-{[[" .. table.concat(wikitext, "]]}-</span>\n**<span lang=\"ja\">-{[[") .. "]]}-</span>"
end

function p.main(frame)
    local args = getArgs(frame)
    local wikitext = {}
    local i = 1
    while args["作品" .. i] do
        table.insert(wikitext, '====<span lang="ja">-{' .. args["作品" .. i] .. "}-</span>====")
        table.insert(wikitext, '*\'\'\'开发\'\'\':<span lang="ja">-{[[' .. args["开发" .. i] .. "]]}-</span>")
        if args["声优" .. i] then
            table.insert(wikitext, "*'''出演声优'''")
            table.insert(wikitext, CVLinks(args["声优" .. i]))
        end
        if args["原画" .. i] or args["编剧" .. i] then
            table.insert(wikitext, "*'''制作人员'''")
            if (args["原画" .. i]) then
                table.insert(wikitext, "**原画:" .. StaffLinks(args["原画" .. i]))
            end
            if (args["SD原画" .. i]) then
                table.insert(wikitext, "**SD原画:" .. StaffLinks(args["SD原画" .. i]))
            end
            if (args["编剧" .. i]) then
                table.insert(wikitext, "**编剧:" .. StaffLinks(args["编剧" .. i]))
            end
            if (args["音乐" .. i]) then
                table.insert(wikitext, "**音乐:" .. StaffLinks(args["音乐" .. i]))
            end
        end
        i = i + 1
    end
    return table.concat(wikitext, "\n")
end

return p