Module:Redirect template: Difference between revisions
From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content added Content deleted
(Get the embed parameter from the rcat template (the one which calls {{Redirect template}})) |
m (18 revisions imported from wikipedia:Module:Redirect_template) |
||
(15 intermediate revisions by 10 users not shown) | |||
Line 11: | Line 11: | ||
help = { 12, '[[wp:help namespace|help]]' }, |
help = { 12, '[[wp:help namespace|help]]' }, |
||
portal = { 100, '[[wp:portal|portal]]' }, |
portal = { 100, '[[wp:portal|portal]]' }, |
||
talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help: |
talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help:Talk pages|talk]]' }, |
||
template = { 10, '[[wp:template namespace|template]]' }, |
template = { 10, '[[wp:template namespace|template]]' }, |
||
wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' }, |
wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' }, |
||
Line 18: | Line 18: | ||
} |
} |
||
-- remove whitespaces from beginning and end of args |
|||
-- Don't convert blank category to nil |
|||
local function valueFunc(key, val) |
local function valueFunc(key, val) |
||
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("'''[[:Category:%s|%s]]''': ", args[k .. ' category'], args.name) |
||
end |
end |
||
end |
end |
||
return "''' |
return string.format("'''%s''': ", args.name) |
||
end |
end |
||
function p. |
function p.main(frame) |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
local namespace = mw.title.getCurrentTitle().namespace |
local namespace = mw.title.getCurrentTitle().namespace |
||
⚫ | |||
local parentParent = frame:getParent():getParent() |
|||
local embed = parentParent and (parentParent.args.embed == "yes") or false |
|||
⚫ | |||
--- 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('\n<div class="rcat %s">\n*%sThis is a redirect%s%s.%s%s\n</div>', |
||
args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) or '', |
|||
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 '', |
||
Line 57: | 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 |
||
if args.sortkey then |
|||
⚫ | |||
content = content .. string.format('[[Category:%s|%s]]', args[k .. ' category'], args.sortkey) |
|||
else |
|||
⚫ | |||
⚫ | |||
elseif args['other category'] then |
elseif args['other category'] then |
||
if args.sortkey then |
|||
retval = retval .. otherCategory |
|||
content = content .. string.format('[[Category:%s|%s]]', args['other category'], args.sortkey) |
|||
else |
|||
⚫ | |||
⚫ | |||
else |
else |
||
content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}} |
|||
end |
end |
||
end |
end |
||
end |
end |
||
return retval |
|||
⚫ | |||
⚫ | |||
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 |
||
Latest revision as of 17:08, January 29, 2022
Documentation for this module may be created at Module:Redirect template/doc
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: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]]' },
}
-- remove whitespaces from beginning and end of args
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("'''[[:Category:%s|%s]]''': ", args[k .. ' category'], args.name)
end
end
return string.format("'''%s''': ", 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('\n<div class="rcat %s">\n*%sThis is a redirect%s%s.%s%s\n</div>',
args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) 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
if args.sortkey then
content = content .. string.format('[[Category:%s|%s]]', args[k .. ' category'], args.sortkey)
else
content = content .. string.format('[[Category:%s]]', args[k .. ' category'])
end
elseif args['other category'] then
if args.sortkey then
content = content .. string.format('[[Category:%s|%s]]', args['other category'], args.sortkey)
else
content = content .. string.format('[[Category:%s]]', args['other category'])
end
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