Module:Twinkle optout
Appearance
This module is used in Template:Twinkle optout.
local Arguments = require('Module:Arguments')
local TableTools = require('Module:TableTools')
local p = {}
local RECOGNIZED_TYPES = TableTools.listToSet{
'csd', 'prod', 'xfd', 'afd', 'tfd', 'ffd', 'rfd', 'mfd', 'cfd'
}
p.main = function(frame)
local args = Arguments.getArgs(frame)
return p.make_link(args[1])
end
p.make_link = function(types)
if types == nil then
return error('no notice types specified')
end
if mw.title.getCurrentTitle().namespace ~= 3 then
return error('{{twinkle optout}} can only used on user talk pages')
end
types = types:gsub('%s+', '')
local types_list = mw.text.split(types, ',')
for idx, type_name in ipairs(types_list) do
if RECOGNIZED_TYPES[type_name:lower()] == nil then
return error('unrecognized notice type: ' .. type_name)
end
end
return '<span style="display: none">https://optout.twinkle?types='..mw.uri.encode(types:lower())..'</span>'
end
return p