|
|
(4 intermediate revisions by 3 users not shown) |
Line 13: |
Line 13: |
|
| |
|
| local p = {} | | local p = {} |
| | |
| | -------------------------------------------------------------------------------- |
| | -- Helper functions |
| | -------------------------------------------------------------------------------- |
|
| |
|
| local function getTitle(...) | | local function getTitle(...) |
| | --Calls mw.title.new and returns either a title object, or nil on error |
| local success, titleObj = pcall(mw.title.new, ...) | | local success, titleObj = pcall(mw.title.new, ...) |
| if success then | | return success and titleObj or nil |
| return titleObj
| |
| else
| |
| return nil
| |
| end
| |
| end | | end |
| | |
| | -------------------------------------------------------------------------------- |
| | -- Main functions |
| | -------------------------------------------------------------------------------- |
|
| |
|
| function p.redirect(frame) | | function p.redirect(frame) |
Line 59: |
Line 64: |
| local formattedRedirect = {} | | local formattedRedirect = {} |
| for k,v in pairs(redirect) do | | for k,v in pairs(redirect) do |
| formattedRedirect[k] = '"' .. v .. '"' | | formattedRedirect[k] = mHatnote.quote(v) |
| end | | end |
| local text = { | | local text = { |
Line 68: |
Line 73: |
| -- Functionality for adding categories | | -- Functionality for adding categories |
| local categoryTable = {} | | local categoryTable = {} |
| function addCategory(cat) | | local function addCategory(cat) |
| if cat and cat ~= '' then | | if cat and cat ~= '' then |
| -- Add by index to avoid duplicates | | -- Add by index to avoid duplicates |
Line 76: |
Line 81: |
| --Generate tracking categories | | --Generate tracking categories |
| local mhOptions = {} | | local mhOptions = {} |
| | local redirTitle |
| for k,v in pairs(redirect) do | | for k,v in pairs(redirect) do |
| -- We don't need a tracking category if the template invocation has been | | -- We don't need a tracking category if the template invocation has been |
Line 82: |
Line 88: |
| and currentTitle.namespace == 0 or currentTitle.namespace == 14 | | and currentTitle.namespace == 0 or currentTitle.namespace == 14 |
| then | | then |
| redirectTitle = redirectTitle or getTitle(v) | | redirTitle = redirectTitle or getTitle(v) |
| if not redirectTitle or not redirectTitle.exists then | | if not redirTitle or not redirTitle.exists then |
| addCategory('Missing redirects') | | addCategory('Missing redirects') |
| elseif not redirectTitle.isRedirect then | | elseif not redirTitle.isRedirect then |
| addCategory('Articles with redirect hatnotes needing review') | | if string.find(redirTitle:getContent(), '#invoke:RfD') then |
| | addCategory('Articles with redirect hatnotes impacted by RfD') |
| | else |
| | addCategory('Articles with redirect hatnotes needing review') |
| | end |
| else | | else |
| local mRedirect = require('Module:Redirect')
| | local target = targetTitle or redirTitle.redirectTarget |
| local target = mRedirect.getTarget(redirectTitle) | | if target and target ~= currentTitle then |
| targetTitle = targetTitle or target and getTitle(target) | |
| if targetTitle and targetTitle ~= currentTitle then
| |
| addCategory('Articles with redirect hatnotes needing review') | | addCategory('Articles with redirect hatnotes needing review') |
| end | | end |
Line 99: |
Line 107: |
| -- Generate the options to pass to [[Module:Hatnote]]. | | -- Generate the options to pass to [[Module:Hatnote]]. |
| if currentTitle.namespace == 0 and not mhOptions.selfref | | if currentTitle.namespace == 0 and not mhOptions.selfref |
| and redirectTitle and redirectTitle.namespace ~= 0 | | and redirTitle and redirTitle.namespace ~= 0 |
| then | | then |
| -- We are on a mainspace page, and the hatnote starts with something | | -- We are on a mainspace page, and the hatnote starts with something |