跳转到内容

模組:Precure title

维基百科,自由的百科全书
local p = {}

local function notnil(data)
    return ((data or "") ~= "") and (data ~= nil)
end

local function getArgs(frame, wrapper)
    if (wrapper == nil) then
        return require("Module:Arguments").getArgs(frame)
    end
    return require("Module:Arguments").getArgs(frame, {wrappers = wrapper})
end

local function translation(text, mode)
    if (mode == "hant") then
        return require("Module:ZhConversion").to_hant(text)
    elseif (mode == "hans") then
        return require("Module:ZhConversion").to_hans(text)
    end
end

local function replace(text)
    local replacement = { "?!", "!?", "!", "?", ",", "、", ";", ":", "「", "」", "『", "“", "”", "‘", "’", "(", ")", "《", "》", "♡", "♪" };
    for _, value in pairs(replacement) do
        text = text:gsub(value, " ")
    end
    return text
end

function p._mainNew(args)
    local span = mw.html.create("span")
    local conversion = { "hans", "hant", "cn", "hk", "mo", "my", "sg", "tw" }
    local fallback = { "", "", "爱奇艺", "ViuTV", "", "東森幼幼台", "", "" }
    local prefix = "-{zh-hans:本标题为;zh-hant:本標題為;}-"
    local suffix = "-{zh-hans:翻译;zh-hant:翻譯}-。"
    local text = "-{"
    local returnValue = "-{"
    local flags = { false, false, false, false, false, false, false, false}
    -- local customFallback = { "cn", "tw", "tw", "tw", "hk", "cn", "my", "hk" }
    for _, value in pairs(conversion) do
        if args[value] then
            flags[_] = true
            text = text..p.conv({ value, (args[_+1] or fallback[_+1]) })
            returnValue = returnValue..p.conv({ value, args[value] })
        end
    end
    -- if ((not flags[1]) and 
    --     (not flags[3]) and 
    --     (not flags[6]) and 
    --     (not flags[7])) then
            
    -- end
    text = text.."}-"
    returnValue = returnValue.."}-"
    span:addClass("rt-commentedText")
        :addClass("tooltip")
        :cssText("border-bottom: 1px dotted; cursor: help")
        :attr("title", prefix..text..suffix)
        :wikitext(returnValue)
    return tostring(span)
end

function p.conv(conv)
    return "zh-"..tostring(conv[1])..":"..tostring(conv[2])..";"
end

function p._main(args)
    local span = mw.html.create("span")
    -- local conversion = { "hans", "hant", "cn", "hk", "mo", "my", "sg", "tw" }
    span:addClass("rt-commentedText")
        :addClass("tooltip")
        :cssText("border-bottom: 1px dotted; cursor: help")
    if notnil(args["cn"]) then
        span:attr("title", "本標題為"..translation((args[2] or "爱奇艺"),"hant").."翻譯。")
        if notnil(args["hk"]) then
            if notnil(args["tw"]) then
                return "-{zh-cn:"..args["cn"]..";zh-tw:"..args["tw"]..";zh-hk:"..args["hk"].."}-"
            end
            span:wikitext(translation(args["cn"],"hant"))
            return "-{zh-cn:"..args["cn"]..";zh-tw:"..tostring(span)..";zh-hk:"..args["hk"].."}-"
        elseif notnil(args["tw"]) then
            span:wikitext(args["tw"])
                :attr("title", translation(("本標題為"..(args[3] or "東森幼幼台").."翻譯。"),"hant"))
            return "-{zh-cn:"..args["cn"]..";zh-tw:"..args["tw"]..";zh-hk:"..tostring(span).."}-"
        end
        span:wikitext(translation(args["cn"],"hant"))
        return "-{zh-cn:"..args["cn"]..";zh-tw:"..tostring(span)..";zh-hk:"..tostring(span).."}-"
    elseif notnil(args["tw"]) then
        span:attr("title", "本標題為"..(args[3] or "東森幼幼台").."翻譯。")
        if notnil(args["hk"]) then
            span:attr("title", translation("本標題為"..(args[3] or "東森幼幼台").."翻譯。","hans"))
                :wikitext(translation(args["tw"],"hans"))
            return "-{zh-hans:"..tostring(span)..";zh-tw:"..args["tw"]..";zh-hk:"..args["hk"].."}-"
        end
        local span2 = mw.clone(span)
        span:wikitext(translation(args["tw"],"hans"))
        span2:wikitext(args["tw"])
        span:attr("title", translation("本標題為"..(args[3] or "東森幼幼台").."翻譯。","hans"))
        return "-{zh-hans:"..tostring(span)..";zh-tw:"..args["tw"]..";zh-hk:"..tostring(span2).."}-"
    elseif notnil(args["hk"]) then
        span:attr("title", "本標題為"..(args[4] or "ViuTV").."翻譯。")
        local span2 = mw.clone(span)
        span:wikitext(translation(args["hk"],"hans"))
        span2:wikitext(args["hk"])
        span:attr("title", translation("本標題為"..(args[4] or "ViuTV").."翻譯。","hans"))
        return "-{zh-hans:"..tostring(span)..";zh-tw:"..tostring(span2)..";zh-hk:"..args["hk"].."}-"
    elseif notnil(args[1]) then
        span:attr("title", "本標題為原文翻譯。")
        local span2 = mw.clone(span)
        local span3 = mw.clone(span2)
        span:wikitext(translation(args[1],"hans"))
        span2:wikitext(replace(args[1]))
        span3:wikitext(args[1])
        span:attr("title", translation("本標題為原文翻譯。","hans"))
        return "-{zh-hans:"..tostring(span)..";zh-tw:"..tostring(span2)..";zh-hk:"..tostring(span3).."}-"
    else
        return "-{zh-hans:在台湾未公布标题的集数,以原文翻译/香港[[ViuTV]]标题(如有)为主;反之(如有)已公布标题的集数,以台湾[[东森幼幼台]]标题为主。;zh-tw:在臺灣未公佈標題的集數,以原文翻譯/香港[[ViuTV]]標題(如有)為主;反之(如有)已公佈標題的集數,以臺灣[[東森幼幼台]]標題為主。;zh-hk:在香港未公佈標題的集數,以原文翻譯/臺灣[[東森幼幼台]]標題(如有)為主;反之已公佈標題的集數,以香港[[ViuTV]]標題為主。}-"
    end
end

function p.main(frame)
    return p._main(getArgs(frame))
end

function p.mainNew(frame)
    return p._mainNew(getArgs(frame))
end

return p