Module:URL: Difference between revisions

Making extraction of URLs containing "=" actually work per edit request
m (1 revision imported)
(Making extraction of URLs containing "=" actually work per edit request)
Line 2:
-- This module implements {{URL}}
--
-- See unit tests at [[Module:URL/teststestcases]]
 
local p = {}
Line 17:
local function extractUrl(args)
for name, val in pairs(args) do
localif urlname ~= 2 and name ..~= "=msg" .. val;then
local url = name .. "=" .. val;
url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3')
local uri = safeUri(url);
if local uri and= uri.host thensafeUri(url);
if uri and uri.host then
return url
end
end
end
Line 89 ⟶ 91:
 
--[[
The main entry point for calingcalling from Template:URL.
--]]
function p.url(frame)
local templateArgs = frame.args
local parentArgs = frame:getParent().args
local url = templateArgs[1] or parentArgs[1] or ''
local text = templateArgs[2] or parentArgs[2] or ''
local msg = templateArgs.msg or parentArgs.msg or ''
url = url or extractUrl(templateArgs) or extractUrl(parentArgs) or ''
if not text then
url = url or extractUrl(templateArgs) or extractUrl(parentArgs)
end
text = text or ''
return p._url(url, text, msg)
end
Line 112 ⟶ 111:
local templateArgs = frame.args
local parentArgs = frame:getParent().args
local url = templateArgs[1] or parentArgs[1] or ''
local text = templateArgs[2] or parentArgs[2] or ''
-- default to no message
local msg = templateArgs.msg or parentArgs.msg or 'no'
url = url or extractUrl(templateArgs) or extractUrl(parentArgs) or ''
if text == '' then
url = url or extractUrl(templateArgs) or extractUrl(parentArgs)
end
-- strip out html tags and [ ] from url
url = (url or ''):gsub("<[^>]*>", ""):gsub("[%[%]]", "")
Anonymous user