モジュール:See here/core

提供:ウィキボヤージュ
ナビゲーションに移動 検索に移動
モジュールの解説[作成]

local p = {}

function p.GetLink(frame)
    local link = frame.args[1]
    local display = frame.args[2]

    -- 第一引数の値が技術的に利用可能な記事名でない場合、
    -- 第一引数の値をそのまま返す
    local IsValidPageName = require('Module:IsValidPageName')
    if IsValidPageName.isValidPageName(frame) == "" then
        return link
    end

    if display == "" then
        display = nil
    end

    return p._formatLink(link, display)
end

function p._formatLink(link, display)
    -- Remove the initial colon for links where it was specified manually.
    link = link:match('^:?(.*)')

    -- Find whether a faux display value has been added with the {{!}} magic
    -- word.
    if not display then
        local prePipe, postPipe = link:match('^(.-)|(.*)$')
        link = prePipe or link
        display = postPipe
    end

    -- Assemble the link.
    if display then
        return string.format(
            '[[:%s|%s]]',
            string.gsub(link, '|(.*)$', ''), --display overwrites manual piping
            display
        )
    else
        return string.format('[[:%s]]', link)
    end
end

return p