<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASearch_link</id>
	<title>Module:Search link - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASearch_link"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Search_link&amp;action=history"/>
	<updated>2026-08-11T12:12:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Search_link&amp;diff=146688&amp;oldid=prev</id>
		<title>imported&gt;Mr. Stradivarius: fix variable name</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Search_link&amp;diff=146688&amp;oldid=prev"/>
		<updated>2014-10-01T10:59:37Z</updated>

		<summary type="html">&lt;p&gt;fix variable name&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{search link}}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local searchProfiles = {&lt;br /&gt;
	-- &amp;quot;advanced&amp;quot; is not included, as we automatically use the advanced profile&lt;br /&gt;
	-- if individual namespaces are specified.&lt;br /&gt;
	default = true,&lt;br /&gt;
	images = true,&lt;br /&gt;
	all = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function escapeTemplate(s)&lt;br /&gt;
	s = s:gsub(&amp;#039;[{}|=]&amp;#039;, function(match)&lt;br /&gt;
		return mw.text.nowiki(match)&lt;br /&gt;
	end)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseNamespaceList(ns)&lt;br /&gt;
	-- s can be a search profile, a comma-separated list of namespaces, or a&lt;br /&gt;
	-- Lua array.&lt;br /&gt;
	-- Items in the list can be any valid key to mw.site.namespaces.&lt;br /&gt;
	-- We return either a profile string or a table of namespace numbers.&lt;br /&gt;
&lt;br /&gt;
	-- Check for no input or search profile strings.&lt;br /&gt;
	local default = &amp;#039;default&amp;#039;&lt;br /&gt;
	if not ns then&lt;br /&gt;
		return default&lt;br /&gt;
	elseif searchProfiles[ns] then&lt;br /&gt;
		return ns&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Parse the string for valid namespaces&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local keys&lt;br /&gt;
	if type(ns) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		keys = ns&lt;br /&gt;
	else&lt;br /&gt;
		keys = mw.text.split(ns, &amp;#039;%s*,%s*&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	for _, key in ipairs(keys) do&lt;br /&gt;
		key = tonumber(key) or key&lt;br /&gt;
		if type(key) == &amp;#039;string&amp;#039; and key:lower() == &amp;#039;main&amp;#039; then&lt;br /&gt;
			key = 0&lt;br /&gt;
		end&lt;br /&gt;
		if mw.site.namespaces[key] then&lt;br /&gt;
			ret[#ret + 1] = mw.site.namespaces[key].id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Check that we were passed at least one namespace, and return the table.&lt;br /&gt;
	if #ret &amp;lt; 1 then&lt;br /&gt;
		return default&lt;br /&gt;
	else&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeLink(searchString, display, ns)&lt;br /&gt;
	-- Normalise the input.&lt;br /&gt;
	if not searchString then&lt;br /&gt;
		-- Show the correct syntax if we are not passed a search string.&lt;br /&gt;
		return &amp;#039;&amp;lt;code&amp;gt;&amp;#039; ..&lt;br /&gt;
			escapeTemplate(&amp;quot;{{search link|&amp;#039;&amp;#039;search string&amp;#039;&amp;#039;|&amp;#039;&amp;#039;link text&amp;#039;&amp;#039;}}&amp;quot;) ..&lt;br /&gt;
			&amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	display = display or searchString&lt;br /&gt;
	ns = parseNamespaceList(ns)&lt;br /&gt;
&lt;br /&gt;
	-- Build the query table&lt;br /&gt;
	local query = {&lt;br /&gt;
		search = searchString,&lt;br /&gt;
		fulltext = &amp;#039;Search&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
	if searchProfiles[ns] then&lt;br /&gt;
		query.profile = ns&lt;br /&gt;
	else&lt;br /&gt;
		query.profile = &amp;#039;advanced&amp;#039;&lt;br /&gt;
		for _, nsid in ipairs(ns) do&lt;br /&gt;
			query[&amp;#039;ns&amp;#039; .. tostring(nsid)] = &amp;#039;1&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Make the URL.&lt;br /&gt;
	local url = mw.uri.fullUrl(&amp;#039;Special:Search&amp;#039;, query)&lt;br /&gt;
	url = tostring(url)&lt;br /&gt;
	&lt;br /&gt;
	-- Add the span tags and display value.&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[%s %s]&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
		url,&lt;br /&gt;
		display&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeNamespaceWarningBanner(title)&lt;br /&gt;
	if title.namespace == 0 then&lt;br /&gt;
		return require(&amp;#039;Module:Message box&amp;#039;).main(&amp;#039;mbox&amp;#039;, {&lt;br /&gt;
			type = &amp;#039;content&amp;#039;,&lt;br /&gt;
			text = mw.text.nowiki(&amp;#039;{{&amp;#039;) ..&lt;br /&gt;
				&amp;#039;[[Template:Search link|Search link]]&amp;#039; ..&lt;br /&gt;
				mw.text.nowiki(&amp;#039;}}&amp;#039;) ..&lt;br /&gt;
				&amp;#039; &amp;#039; ..&lt;br /&gt;
				&amp;#039;should not be used in [[WP:WIAA|articles]] as links to &amp;#039; ..&lt;br /&gt;
				&amp;#039;&amp;quot;search result pages&amp;quot; are among the &amp;#039; ..&lt;br /&gt;
				&amp;#039;[[WP:LINKSTOAVOID|links normally to be avoided]].&amp;#039;,&lt;br /&gt;
			textstyle = &amp;#039;text-align: center&amp;#039;&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(searchString, display, ns, title)&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
	return makeLink(searchString, display, ns) .. makeNamespaceWarningBanner(title)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = &amp;#039;Template:Search link&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
	local searchString = args[1]&lt;br /&gt;
	local display = args[2]&lt;br /&gt;
	local ns = args.ns&lt;br /&gt;
	return p._main(searchString, display, ns)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Mr. Stradivarius</name></author>
	</entry>
</feed>