跳转到内容

模組:Vgn

被永久保护的模块
维基百科,自由的百科全书
require("strict")

local getArgs = require("Module:Arguments").getArgs
local list = require("Module:List").unbulleted
local conv = require("Module:WikitextLC").converted

local region_labels = {
    ww = "全球",
    hans = "简体中文",
    hant = "繁體中文",
    cn = "中国大陆",
    hk = "香港",
    mo = "澳門",
    my = "马来西亚",
    sg = "新加坡",
    tw = "臺灣",
}

local function nocc(text)
    return conv(text, {"zh", "zh-hans", "zh-hant"})
end

local function build_regions_label(region_codes_str)
    if region_codes_str == nil then
        return nil
    end

    local region_names = {}
    local region_codes = mw.text.split(region_codes_str, ",", false)

    for _, code in ipairs(region_codes) do
        code = mw.ustring.lower(mw.text.trim(code))
        local label = region_labels[code]
        if label then
            table.insert(region_names, label)
        end
    end

    if #region_names == 0 then
        return nil
    end
    return "<small>(" .. table.concat(region_names, "、") .. ")</small>"
end

local function build_item(text)
    local _, _, code, name = mw.ustring.find(text, "^%s-([^:]+)%s-:%s-(.+)%s-$")
    local label = build_regions_label(code)
    if label == nil then
        return nocc(text)
    end
    return nocc(name) .. label
end

local function main(args)
    local list_items = {}
    for _, v in ipairs(args) do
        table.insert(list_items, build_item(v))
    end
    return list(list_items)
end

local p = {}

local function makeInvokeFunc(funcName)
    return function(frame)
        local args = getArgs(frame)
        return p[funcName](args)
    end
end

p.main = makeInvokeFunc("_main")
function p._main(args)
    return main(args)
end

return p