跳转到内容

Module:Redirect hatnote

轻之舟百科,让知识轻装启航

此模块的文档可以在Module:Redirect hatnote/doc创建

local p = {}

function p.redirect(frame)
    local args = frame.args
    local pargs = frame:getParent().args
    
    -- 获取参数
    local redirectPage = args[1] or pargs[1] or ""
    local usage1 = args[2] or pargs[2] or ""
    local target1 = args[3] or pargs[3] or ""
    local usage2 = args[4] or pargs[4] or ""
    local target2 = args[5] or pargs[5] or ""
    local usage3 = args[6] or pargs[6] or ""
    local target3 = args[7] or pargs[7] or ""
    local customText = args.text or pargs.text or ""
    
    if redirectPage == "" then
        return ""
    end
    
    -- 构建输出
    local result = '<div class="hatnote">"' .. redirectPage .. '"重定向至此'
    
    -- 处理消歧义链接
    local hasDisambig = false
    
    if usage1 ~= "" then
        hasDisambig = true
        if target1 == "" then
            target1 = mw.title.getCurrentTitle().text .. " (消歧义)"
        end
        
        if usage1 == "和" then
            result = result .. '和[[' .. target1 .. ']]'
        else
            result = result .. '。关于' .. usage1 .. ',请见[[' .. target1 .. ']]'
        end
    end
    
    if usage2 ~= "" and usage2 ~= "和" then
        if target2 == "" then
            target2 = mw.title.getCurrentTitle().text .. " (消歧义)"
        end
        result = result .. ';关于' .. usage2 .. ',请见[[' .. target2 .. ']]'
    elseif usage2 == "和" and target2 ~= "" then
        result = result .. '和[[' .. target2 .. ']]'
    end
    
    if usage3 ~= "" and usage3 ~= "和" then
        if target3 == "" then
            target3 = mw.title.getCurrentTitle().text .. " (消歧义)"
        end
        result = result .. ';关于' .. usage3 .. ',请见[[' .. target3 .. ']]'
    elseif usage3 == "和" and target3 ~= "" then
        result = result .. '和[[' .. target3 .. ']]'
    end
    
    -- 如果没有指定用法但有目标,默认显示"关于其他用法"
    if not hasDisambig and target1 ~= "" then
        result = result .. '。关于其他用法,请见[[' .. target1 .. ']]'
    end
    
    if customText ~= "" then
        result = result .. customText
    end
    
    result = result .. '。</div>'
    
    return result
end

return p