Module:Bugzilla
From Guild of Archivists
Documentation for this module may be created at Module:Bugzilla/doc
local UrlEncoding = require( 'Module:UrlEncoding' )
local encode = UrlEncoding._encode
local link_to_component = function ( product, component, linktext )
-- convert to lower case to avoid 404s
product = product:lower()
local linkstr = '[https://phabricator.wikimedia.org/tag/' .. encode( product )
local construct = false
if linktext == nil or linktext == '' then
construct = true
linktext = 'Bugs in project ' .. product
end
-- concatenate a potential 'component' to a 'product' by a dash
if component ~= nil and component ~= '' then
-- convert to lower case and replace whitespace by dash to avoid 404s
component = component:lower()
-- remove whitespace from beginning and end of string
component = mw.text.trim( component )
-- replace remaining whitespace with a dash
component = string.gsub(component, "%s+", "-")
linkstr = linkstr .. '-' .. component
if construct then
linktext = linktext .. ' and component ' .. component
end
end
return linkstr .. ' ' .. linktext .. ']'
end
local link_to_bug = function ( bugnum, linktext )
local linkstr = '[[:bugzilla:' .. bugnum .. '|'
if linktext ~= nil then
linkstr = linkstr .. linktext
else
linkstr = linkstr .. 'Bug ' .. bugnum
end
linkstr = linkstr .. ']]'
return linkstr
end
return {
_link_to_component = link_to_component,
_link_to_bug = link_to_bug,
link_to_component = function ( frame )
local product, component, text
if frame.args[1] ~= nil then
product = frame.args[1]
if frame.args[2] ~= nil then
component = frame.args[2]
if frame.args[3] ~= nil then
text = frame.args[3]
end
end
else
if frame.args.product ~= nil then
product = frame.args.product
if frame.args.component ~= nil then
component = frame.args.component
end
end
if frame.args.text ~= nil then
text = frame.args.text
end
end
return link_to_component( product, component, text )
end,
link_to_bug = function ( frame )
local bugnum = '1'
local linktext = nil
local ltstart = 1
if frame.args.bug ~= nil then
bugnum = frame.args.bug
elseif frame.args[1] ~= nil then
bugnum = frame.args[1]
ltstart = 2
else
bugnum = '1'
end
if frame.args.linktext ~= nil then
linktext = frame.args.linktext
elseif frame.args[ltstart] ~= nil then
linktext = frame.args[ltstart]
end
return link_to_bug( bugnum, linktext )
end
}