FANDOM


 
-- This module counts the number of times a string appears on a given page.
 
local yesno = require('Module:Yesno')
 
local p = {}
 
local function escapePattern(s)
	-- Escape punctuation in a string so it can be used in a Lua pattern.
	s = s:gsub('%p', '%%%0')
	return s
end
 
function p._count(args)
	-- Get the page text, checking for common errors.
	if not args.page then
		error("no 'page' argument; please provide the name of the page you " ..
			"wish to count strings in", 2)
	end
	local title = mw.title.new(args.page)
	if not title then
		error(string.format(
			"'%s' is not a valid page name; check for invalid characters",
			args.page
		), 2)
	end
	local text = title:getContent()
	if not text then
		error(string.format(
			"could not get the content of page '%s'; check that it exists",
			title.prefixedText
		), 2)
	end
 
	-- Get the pattern
	local pattern = args.search
	if not pattern then
		error("no 'search' argument; please provide the string you wish to search for", 2)
	elseif yesno(args.plain) ~= false then
		pattern = escapePattern(pattern)
	end
 
	-- Find the count
	local temp, count = mw.ustring.gsub(text, pattern, '%0')
	return count
end
 
function p.count(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = 'Template:String count'
	})
	return p._count(args)
end
 
return p

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.