Module:UtilsMarkup/Link

local p = {} local h = {}

local format = require("Module:UtilsMarkup/Format").format local utilsDPL = require("Module:UtilsDPL")

-- If backlink == false then this print an external link that looks like an internal one -- (useful for creating links that do not appear in Special:WhatLinksHere) function p.link(link, text, backlink) if not link then return "" end link = mw.text.trim(link) if link:find('http') then return h.externalLink(link, text) end if backlink == false then local pageExists = utilsDPL.pageExists(link) local url = tostring(mw.uri.fullUrl(link, { action = not pageExists and "edit" or nil, redlink = not pageExists and "1" or nil }))		local externalLink = h.externalLink(url, text or link) local formattedLink = format(externalLink, {			class = pageExists and "plainlinks" or "plainlinks new"		}) return formattedLink end local title = mw.title.new(link) if title.nsText == "File" or title.nsText == "Category" then link = ":" .. link if text == "" then text = title.text end end return h.internalLink(link, text) end

function h.internalLink(page, display) if not page then return "" end if not display then return ("%s"):format(page) end return ('%s'):format(page, display) end

function h.externalLink(page, display) if not page then return "" end if not display then return page end return ('[%s %s]'):format(page, display) end

return p