Jump to content

Module:Check DYK hook

Permanently protected module
From Wikipedia, the free encyclopedia

-- This module performs validation checks for [[WP:DYK]] hooks

local libraryUtil = require('libraryUtil')
local p = {}

local validationPatternGroups = {
	{
		-- Check that hooks start with three periods, followed by an acceptable
		-- follow-on word.
		"^%.%.%. *that",
		"^%.%.%. *about",	
	},
	{
		-- Check that hooks end with a question mark, or another acceptable
		-- phrase.
		[[.%?%]*'*"?$]],
		[[.&#63;</span>%]*'*"?$]],
		"[Yy]ou probably did%.+$",
	}
}

function p._isValidHook(hook)
	-- Whether the given hook is valid.
	-- We use the patterns in the validationPatternGroups table to find whether
	-- a hook is valid or not. Hooks are treated as valid if they match at least
	-- one pattern from each group.
	libraryUtil.checkType("_isValidHook", 1, hook, "string")
	for _, patternGroup in ipairs(validationPatternGroups) do
		local found = false
		for _, pattern in ipairs(patternGroup) do
			if mw.ustring.find(hook, pattern) then
				found = true
				break
			end
		end
		if not found then
			return false
		end
	end
	return true
end

function p.isValidHook(frame)
	local args = frame.args
	local hook = args.hook or args[1]
	if not hook then
		error("No hook specified")
	end
	hook = hook:match('^%s*(.-)%s*$') -- Trim whitespace
	if p._isValidHook(hook) then
		return "yes"
	else
		return ""
	end
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy