Difference between revisions of "Module:Redirect template"
Jump to navigation
Jump to search
m (1 revision imported) |
en>Steel1943 |
||
Line 22: | Line 22: | ||
if type(val) == 'string' then | if type(val) == 'string' then | ||
val = val:match('^%s*(.-)%s*$') | val = val:match('^%s*(.-)%s*$') | ||
− | if val == '' then | + | if val == '' and key ~= 'category' and key ~= 'embed' then |
return nil | return nil | ||
end | end | ||
Line 32: | Line 32: | ||
for k in pairs(namespaceCategories) do | for k in pairs(namespaceCategories) do | ||
if args[k .. ' category'] then | if args[k .. ' category'] then | ||
− | return | + | return "'''[[:Category:" .. args[k .. ' category'] .. "|" .. args.name .. "]]''': " |
end | end | ||
end | end | ||
− | return | + | return "'''" .. args.name .. "''': " |
end | end | ||
− | function p. | + | function p.core(frame, args) |
− | + | if not args then | |
+ | args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template/core', valueFunc = valueFunc}) | ||
+ | end | ||
local namespace = mw.title.getCurrentTitle().namespace | local namespace = mw.title.getCurrentTitle().namespace | ||
+ | local otherCategory = args['other category'] and (args.category or string.format('[[Category:%s]]', args['other category'])) | ||
+ | local embedPossible = args.embed == nil or args.embed == 'yes' | ||
--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed | --- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed | ||
local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' ' | local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' ' | ||
− | local | + | local retval = string.format('*%sThis is a redirect%s%s.%s%s', |
− | + | embedPossible and args.name and getPrettyName(args) or '', | |
− | args.name and getPrettyName(args) or '', | ||
args.from and (' from ' .. args.from) or '', | args.from and (' from ' .. args.from) or '', | ||
args.to and (' to ' .. args.to) or '', | args.to and (' to ' .. args.to) or '', | ||
Line 53: | Line 56: | ||
args.info or '' | args.info or '' | ||
) | ) | ||
− | |||
for k,v in pairs(namespaceCategories) do | for k,v in pairs(namespaceCategories) do | ||
if args[k .. ' category'] then | if args[k .. ' category'] then | ||
if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then | if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then | ||
− | + | retval = retval .. (args.category or string.format('[[Category:%s]]', args[k .. ' category'])) | |
elseif args['other category'] then | elseif args['other category'] then | ||
− | + | retval = retval .. otherCategory | |
else | else | ||
− | + | retval = retval .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}} | |
end | end | ||
end | end | ||
end | end | ||
+ | return retval | ||
+ | end | ||
− | + | function p.main(frame) | |
− | + | local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc}) | |
− | if | + | local retval = p.core(frame, args) |
− | return | + | if mw.title.getCurrentTitle().namespace == 0 then |
− | elseif | + | if args.printworthy == 'yes' then |
− | return | + | return retval .. (args.category or '[[Category:Printworthy redirects]]') |
+ | elseif args.printworthy == 'no' then | ||
+ | return retval .. (args.category or '[[Category:Unprintworthy redirects]]') | ||
end | end | ||
end | end | ||
− | return | + | return retval |
end | end | ||
return p | return p |
Revision as of 22:08, 2 January 2019
This Lua module is used on 3,200,000+ pages, which is ≈39017% of all pages. To avoid large-scale disruption and unnecessary server load, any changes to it should first be tested in the module's /sandbox or /testcases subpages. The tested changes can then be added to this page in a single edit. Please consider discussing changes on the talk page before implementing them. |
This module uses Lua: |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
This module implements {{redirect template}} and {{redirect template/core}}. Please see the template pages for documentation.
require('Module:No globals')
local p = {}
-- key is beginning of arg name. value is table with namespace number and link
-- alternatively, a function taking the namespace number and returning a validity
-- can be used
local namespaceCategories = {
all = { function() return true end },
main = { 0, '[[wp:mainspace|main]]' },
help = { 12, '[[wp:help namespace|help]]' },
portal = { 100, '[[wp:portal|portal]]' },
talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help:Using talk pages|talk]]' },
template = { 10, '[[wp:template namespace|template]]' },
wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' },
category = { 14, '[[wp:categorization|category]]' },
user = { 2, '[[wp:user pages|user]]' },
}
-- Don't convert blank category to nil
local function valueFunc(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' and key ~= 'category' and key ~= 'embed' then
return nil
end
end
return val
end
local function getPrettyName(args)
for k in pairs(namespaceCategories) do
if args[k .. ' category'] then
return "'''[[:Category:" .. args[k .. ' category'] .. "|" .. args.name .. "]]''': "
end
end
return "'''" .. args.name .. "''': "
end
function p.core(frame, args)
if not args then
args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template/core', valueFunc = valueFunc})
end
local namespace = mw.title.getCurrentTitle().namespace
local otherCategory = args['other category'] and (args.category or string.format('[[Category:%s]]', args['other category']))
local embedPossible = args.embed == nil or args.embed == 'yes'
--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed
local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' '
local retval = string.format('*%sThis is a redirect%s%s.%s%s',
embedPossible and args.name and getPrettyName(args) or '',
args.from and (' from ' .. args.from) or '',
args.to and (' to ' .. args.to) or '',
args.info and beCompatibleWithBug12974 or '',
args.info or ''
)
for k,v in pairs(namespaceCategories) do
if args[k .. ' category'] then
if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then
retval = retval .. (args.category or string.format('[[Category:%s]]', args[k .. ' category']))
elseif args['other category'] then
retval = retval .. otherCategory
else
retval = retval .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}}
end
end
end
return retval
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc})
local retval = p.core(frame, args)
if mw.title.getCurrentTitle().namespace == 0 then
if args.printworthy == 'yes' then
return retval .. (args.category or '[[Category:Printworthy redirects]]')
elseif args.printworthy == 'no' then
return retval .. (args.category or '[[Category:Unprintworthy redirects]]')
end
end
return retval
end
return p