Module:Phabricator
Appearance
This module has been created to replace the current template code in Template:Phabricator. It supports the template's documented behavior of any combination of including a "T" or not in the task ID, titling the link, or having a link to Wikipedia:Phabricator.
The |art= and |article= params support both y and yes as a value.
Examples
[edit]{{#invoke:Phabricator|task}}{{#invoke:Phabricator|task|foo}}- Invalid task ID: foo
{{#invoke:Phabricator|task|T1234}}{{#invoke:Phabricator|task|1234}}{{#invoke:Phabricator|task|T1234|label=Lorem ipsum dolor sit amet}}- T1234 (Lorem ipsum dolor sit amet)
{{#invoke:Phabricator|task|T1234|T5678}}{{#invoke:Phabricator|task|T1234|T5678|label=Various tasks}}{{#invoke:Phabricator|task|T1234|label1=Restrict Bugzilla access to read-only|T5678|label2=Allow disabling MediaWiki:aboutsite in the same way as MediaWiki:Disclaimers}}{{#invoke:Phabricator|task|T1234|art=y}}{{#invoke:Phabricator|task|T1234|article=yes}}
Edge cases
[edit]{{#invoke:Phabricator|task||label=foo}}{{#invoke:Phabricator|task||T1234|label2=Restrict Bugzilla access to read-only|T5678|label3=Allow disabling MediaWiki:aboutsite in the same way as MediaWiki:Disclaimers|article=true}}- Phabricator: T1234 (Restrict Bugzilla access to read-only) • T5678 (Allow disabling MediaWiki:aboutsite in the same way as MediaWiki:Disclaimers)
local yesno = require('Module:Yesno')
local notblank = function(v) return (v or '') ~= '' end
local parens = function(v) return notblank(v) and (" (" .. v .. ")") or "" end
local p = {}
p._task = function(args)
local art = (yesno(args.art) or yesno(args.article)) and
"[[Wikipedia:Phabricator|Phabricator]]''':''' " or ""
local output = {}
for k, v in pairs(args) do
if (tonumber(k) ~= nil and notblank(v)) then
table.insert(output, tonumber(k))
end
end
table.sort(output)
if #output == 0 then return art .. "[[Phabricator:|Phabricator]]" end
for k, v in ipairs(output) do
args[v] = mw.text.trim(args[v])
local taskId = ((tonumber(args[v]) ~= nil) and "T" or "") .. args[v]
if not (string.find(taskId, '^T%d+$')) then
return require('Module:Error')._error{"Invalid task ID: " .. args[v]}
end
output[k] = "[[Phabricator:" .. taskId .. "|" .. taskId .. "]]" ..
parens(args['label' .. v])
end
return art .. table.concat(output, " • ") .. parens(args.label)
end
p.task = function(frame)
return p._task(require('Module:Arguments').getArgs(frame))
end
return p