モジュール:Noredirect

提供:ManyoWiki

このモジュールについての説明文ページを モジュール:Noredirect/doc に作成できます

local p = {}

-- Return a blue noredirect wikilink for an existing page, a red wikilink for a non-existing page
function p.noredirect(pagetitle, label)

    -- Evaluate pagetitle
    if pagetitle == nil or pagetitle == '' then
        return error('ページ名が指定されていません')
    end
    pagetitle = pagetitle:gsub('^%[*', ''):gsub('%]*$', '') -- Remove leading/trailing brackets to prevent errors
    pagetitle = pagetitle:gsub('_', ' ') -- Replace underscores with spaces because this variable will be used for the link's label
    pagetitle = pagetitle:gsub('^%s*', ''):gsub('%s*$', '') -- trim
    if pagetitle == '' then
        return error('ページ名が不正です')
    elseif pagetitle:find('[<>[%]{}|]') then
        return error('ページ名に使用できない記号が含まれています( < > [ ] { } | )')
    end

    -- Create link
    local title = mw.title.new(pagetitle)
    if label == nil or label == '' then
        label = pagetitle -- Don't use title.prefixedText here because the namespace alias (if the title contains any) is replaced by its canonical one
    end
    if title.exists then
        local link = '[' .. tostring(mw.uri.fullUrl(title.prefixedText, {redirect = 'no'})) .. ' ' .. label .. ']'
        link = '<span class="plainlinks">' .. link .. '</span>'
        return link
    else
        return '[[:' .. title.prefixedText .. '|' .. label .. ']]'
    end

end

-- Main package function
function p.Main(frame)
    return p.noredirect(frame.args['1'], frame.args['2'])
end

return p