Jump to content

Module:Page assessment: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
fix
check for redirects
Line 21: Line 21:
end
end


--[[
Checks if a page is a redirect without using the expensive mw.title.isRedirect

@param {string} wikitext - page wikitext, from mw.title:getContent()
@returns {boolean}
--]]
function util.isRedirect(wikitext)
return string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]"
) and true or false
end
--[[
--[[
Creates a pattern for finding the value given to a parameter within any template
Creates a pattern for finding the value given to a parameter within any template
Line 38: Line 50:
elseif not subjectWikitext then -- talk page does not exist
elseif not subjectWikitext then -- talk page does not exist
return "unassessed"
return "unassessed"
elseif util.isRedirect(subjectWikitext) then
return "redirect"
else
else
local classParam = mw.ustring.match(talkpageWikitext, "{{.-%|%s*class%s*=([^}%|]*)", 0) or ""
local classParam = mw.ustring.match(talkpageWikitext, "{{.-%|%s*class%s*=([^}%|]*)", 0) or ""

Revision as of 14:10, 22 December 2020

require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local p = {}
local util = {}

--[[
Gets the wikitext of a page and its related talk or subject page (nil if it does
not exist)

@param {string} pageName
@returns {string|nil, string|nil} subject page wikitext, talk page wikitex
]]--
function util.getWikitext(pageName)
	local title = mw.title.new(pageName)
	if not title then
		return nil, nil
	end
	local subjectTitle = title.subjectPageTitle
	local talkpageTitle = title.talkPageTitle
	return subjectTitle:getContent(), talkpageTitle:getContent()
end

--[[
Checks if a page is a redirect without using the expensive mw.title.isRedirect

@param {string} wikitext - page wikitext, from mw.title:getContent()
@returns {boolean}
--]]
function util.isRedirect(wikitext)
	return string.match(
		text,
		"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]"
	) and true or false
end
--[[
Creates a pattern for finding the value given to a parameter within any template
call.

@param {string} param
@returns {string} pattern
]]--
function util.paramValuePattern(param)
	return "{{[^}]*|%s*" .. param .. "%s*=([^|{}]+)"
end

function p.class(pageName)
	local subjectWikitext, talkpageWikitext = util.getWikitext(pageName)
	if not subjectWikitext then -- page does not exist
		return "needed"
	elseif not subjectWikitext then -- talk page does not exist
		return "unassessed"
	elseif util.isRedirect(subjectWikitext) then
		return "redirect"
	else
		local classParam = mw.ustring.match(talkpageWikitext, "{{.-%|%s*class%s*=([^}%|]*)", 0) or ""
		return mw.text.trim(classParam)
	end
end

function p.main(frame)
	local args = getArgs(frame, {
		parentFirst = true
	})
	return p.class(args[1])
end

p.util = util
return p