Module:Redirect template: Difference between revisions
Appearance
Content deleted Content added
The Earwig (talk | contribs) m Changed protection level of Module:Redirect template: High-risk Lua module: over two million mainspace transclusions ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only administrators] (indefinite)) |
code cleanup by User:SD0001. See Module:Redirect template/sandbox for edit summary of erach change. |
||
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 == ' |
if val == '' 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 string.format("<b>[[:Category:%s|%s]]</b>: ", args[k .. ' category'], args.name) |
||
end |
end |
||
end |
end |
||
return " |
return string.format("<b>%s</b>", args.name) |
||
end |
end |
||
function p. |
function p.main(frame) |
||
⚫ | |||
⚫ | |||
⚫ | |||
end |
|||
local namespace = mw.title.getCurrentTitle().namespace |
local namespace = mw.title.getCurrentTitle().namespace |
||
⚫ | |||
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 content = string.format('<ul class="rcat %s"><li>%sThis is a redirect%s%s.%s%s</li></ul>', |
||
args.class 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 56: | Line 53: | ||
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 |
||
content = content .. string.format('[[Category:%s]]', args[k .. ' category']) |
|||
elseif args['other category'] then |
elseif args['other category'] then |
||
⚫ | |||
retval = retval .. otherCategory |
|||
else |
else |
||
content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}} |
|||
end |
end |
||
end |
end |
||
end |
end |
||
return retval |
|||
end |
|||
⚫ | |||
function p.main(frame) |
|||
local yesno = require('Module:Yesno') |
|||
⚫ | |||
local retval = p.core(frame, args) |
|||
⚫ | |||
if mw.title.getCurrentTitle().namespace == 0 then |
|||
elseif yesno(args.printworthy) == false then |
|||
return |
return content .. '[[Category:Unprintworthy redirects]]' |
||
⚫ | |||
⚫ | |||
end |
end |
||
end |
end |
||
return |
return content |
||
end |
end |
||
Revision as of 09:58, 2 January 2019
![]() | This Lua module is used on approximately 7,190,000 pages, or roughly 11% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
![]() | This module depends on the following other modules: |
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | 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}}. Please see the template page 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 == '' then
return nil
end
end
return val
end
local function getPrettyName(args)
for k in pairs(namespaceCategories) do
if args[k .. ' category'] then
return string.format("<b>[[:Category:%s|%s]]</b>: ", args[k .. ' category'], args.name)
end
end
return string.format("<b>%s</b>", args.name)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc})
local namespace = mw.title.getCurrentTitle().namespace
--- 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 content = string.format('<ul class="rcat %s"><li>%sThis is a redirect%s%s.%s%s</li></ul>',
args.class or '',
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
content = content .. string.format('[[Category:%s]]', args[k .. ' category'])
elseif args['other category'] then
content = content .. string.format('[[Category:%s]]', args['other category'])
else
content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}}
end
end
end
if namespace == 0 then
local yesno = require('Module:Yesno')
if yesno(args.printworthy) == true then
return content .. '[[Category:Printworthy redirects]]'
elseif yesno(args.printworthy) == false then
return content .. '[[Category:Unprintworthy redirects]]'
end
end
return content
end
return p