<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pixelbar.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3ATemplate_link_general</id>
	<title>Module:Template link general - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pixelbar.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3ATemplate_link_general"/>
	<link rel="alternate" type="text/html" href="https://wiki.pixelbar.nl/index.php?title=Module:Template_link_general&amp;action=history"/>
	<updated>2026-04-08T06:39:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.pixelbar.nl/index.php?title=Module:Template_link_general&amp;diff=319&amp;oldid=prev</id>
		<title>NinjaLikesCheez: 1 revision imported: Template:Div col</title>
		<link rel="alternate" type="text/html" href="https://wiki.pixelbar.nl/index.php?title=Module:Template_link_general&amp;diff=319&amp;oldid=prev"/>
		<updated>2025-08-27T12:52:34Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Template:Div col&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:52, 27 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>NinjaLikesCheez</name></author>
	</entry>
	<entry>
		<id>https://wiki.pixelbar.nl/index.php?title=Module:Template_link_general&amp;diff=318&amp;oldid=prev</id>
		<title>mediawikiwiki&gt;Pppery: Protected &quot;Module:Template link general&quot; ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://wiki.pixelbar.nl/index.php?title=Module:Template_link_general&amp;diff=318&amp;oldid=prev"/>
		<updated>2025-03-12T23:40:26Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/Module:Template_link_general&quot; title=&quot;Module:Template link general&quot;&gt;Module:Template link general&lt;/a&gt;&amp;quot; ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This implements [[Template:Template link general]] and various other templates in its family&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:Template link general/config&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Is a string non-empty?&lt;br /&gt;
local function _ne(s)&lt;br /&gt;
	return s ~= nil and s ~= &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local nw = mw.text.nowiki&lt;br /&gt;
&lt;br /&gt;
local function addTemplate(s)&lt;br /&gt;
	local i, _ = s:find(&amp;#039;:&amp;#039;, 1, true)&lt;br /&gt;
	if i == nil then&lt;br /&gt;
		return &amp;#039;Template:&amp;#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
	local ns = s:sub(1, i - 1)&lt;br /&gt;
	if ns == &amp;#039;&amp;#039; or mw.site.namespaces[ns] then&lt;br /&gt;
		return s&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;Template:&amp;#039; .. s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function trimTemplate(s)&lt;br /&gt;
	local needle = &amp;#039;template:&amp;#039;&lt;br /&gt;
	if s:sub(1, needle:len()):lower() == needle then&lt;br /&gt;
		return s:sub(needle:len() + 1)&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linkTitle(args)&lt;br /&gt;
	if yesno(args.nolink) then&lt;br /&gt;
		return args[1]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleObj&lt;br /&gt;
	local titlePart = &amp;#039;[[&amp;#039;&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		-- This handles :Page and other NS&lt;br /&gt;
		titleObj = mw.title.new(args[1], &amp;#039;Template&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		titleObj = mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or&lt;br /&gt;
				addTemplate(args[1]))&lt;br /&gt;
&lt;br /&gt;
	local textPart = args.alttext&lt;br /&gt;
	if not _ne(textPart) then&lt;br /&gt;
		if titleObj ~= nil then&lt;br /&gt;
			textPart = titleObj:inNamespace(&amp;quot;Template&amp;quot;) and args[1] or titleObj.fullText&lt;br /&gt;
		else&lt;br /&gt;
			-- redlink&lt;br /&gt;
			textPart = args[1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.brace) then&lt;br /&gt;
		textPart = nw(&amp;#039;{{&amp;#039;) .. textPart .. nw(&amp;#039;}}&amp;#039;)&lt;br /&gt;
	elseif yesno(args.braceinside) then&lt;br /&gt;
		textPart = nw(&amp;#039;{&amp;#039;) .. textPart .. nw(&amp;#039;}&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	titlePart = titlePart .. &amp;#039;|&amp;#039; .. textPart .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	if yesno(args.braceinside) then&lt;br /&gt;
		titlePart = nw(&amp;#039;{&amp;#039;) .. titlePart .. nw(&amp;#039;}&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return titlePart&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		frameOnly = false,&lt;br /&gt;
		wrappers = {&lt;br /&gt;
			&amp;quot;Template:Tlg&amp;quot;,&lt;br /&gt;
			&amp;quot;Template:Template link general&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- TemplateStyles&lt;br /&gt;
	local templateStyles = {&lt;br /&gt;
		mono   = false,&lt;br /&gt;
		nowrap = false,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local bold = yesno(args.bold) or yesno(args.boldlink) or yesno(args.boldname)&lt;br /&gt;
	local italic = yesno(args.italic) or yesno(args.italics)&lt;br /&gt;
	local dontBrace = yesno(args.brace) or yesno(args.braceinside)&lt;br /&gt;
	local code = yesno(args.code) or yesno(args.tt)&lt;br /&gt;
	local show_result = yesno(args._show_result)&lt;br /&gt;
	local expand = yesno(args._expand)&lt;br /&gt;
	local classes = {}&lt;br /&gt;
&lt;br /&gt;
	-- Build the link part&lt;br /&gt;
	local titlePart = linkTitle(args)&lt;br /&gt;
	if bold then titlePart = &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. titlePart .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.subst) then&lt;br /&gt;
		local substLink = cfg[&amp;#039;subst-link&amp;#039;]&lt;br /&gt;
		if _ne(substLink) and yesno(args[&amp;#039;link subst&amp;#039;]) then&lt;br /&gt;
			titlePart = &amp;#039;[[&amp;#039; .. substLink .. &amp;#039;|subst]]:&amp;#039; .. titlePart&lt;br /&gt;
		else&lt;br /&gt;
			titlePart = &amp;#039;subst:&amp;#039; .. titlePart&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.nowrapname) then&lt;br /&gt;
		templateStyles.nowrap = true&lt;br /&gt;
		titlePart = &amp;#039;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;&amp;#039; .. titlePart .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the arguments&lt;br /&gt;
	local textPart = &amp;quot;&amp;quot;&lt;br /&gt;
	local textPartBuffer = &amp;quot;&amp;amp;#124;&amp;quot;&lt;br /&gt;
	local codeArguments = {}&lt;br /&gt;
	local codeArgumentsString = &amp;quot;&amp;quot;&lt;br /&gt;
	local i = 2&lt;br /&gt;
	local j = 1&lt;br /&gt;
	while args[i] do&lt;br /&gt;
		local val = args[i]&lt;br /&gt;
		if val ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			if yesno(args.nowiki) then&lt;br /&gt;
				-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will&lt;br /&gt;
				-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up&lt;br /&gt;
				val = nw(mw.text.unstripNoWiki(val))&lt;br /&gt;
			end&lt;br /&gt;
			local k, v = string.match(val, &amp;quot;(.*)=(.*)&amp;quot;)&lt;br /&gt;
			if not k then&lt;br /&gt;
				codeArguments[j] = val&lt;br /&gt;
				j = j + 1&lt;br /&gt;
			else&lt;br /&gt;
				codeArguments[k] = v&lt;br /&gt;
			end&lt;br /&gt;
			codeArgumentsString = codeArgumentsString .. textPartBuffer .. val&lt;br /&gt;
			if italic then&lt;br /&gt;
				val = &amp;#039;&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&amp;#039; .. val .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			textPart = textPart .. textPartBuffer .. val&lt;br /&gt;
		end&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tagName = nil&lt;br /&gt;
	local css = nil&lt;br /&gt;
&lt;br /&gt;
	-- final wrap&lt;br /&gt;
	local ret = titlePart .. textPart&lt;br /&gt;
	if not dontBrace then ret = nw(&amp;#039;{{&amp;#039;) .. ret .. nw(&amp;#039;}}&amp;#039;) end&lt;br /&gt;
	if yesno(args.a) then ret = nw(&amp;#039;*&amp;#039;) .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. ret end&lt;br /&gt;
	if yesno(args.kbd) then&lt;br /&gt;
		tagName = &amp;#039;kbd&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.mono) then&lt;br /&gt;
		templateStyles.mono = true&lt;br /&gt;
		table.insert(classes, &amp;#039;monospaced&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local plaincode = yesno(args.plaincode) and not code&lt;br /&gt;
	if code or plaincode then&lt;br /&gt;
		if tagName then&lt;br /&gt;
			-- kbd == true &amp;amp;&amp;amp; code == true&lt;br /&gt;
			ret = (&amp;#039;&amp;lt;%s&amp;gt;%s&amp;lt;/%s&amp;gt;&amp;#039;):format(tagName, ret, tagName)&lt;br /&gt;
		end&lt;br /&gt;
		tagName = &amp;#039;code&amp;#039;&lt;br /&gt;
		if plaincode then&lt;br /&gt;
			css = {&lt;br /&gt;
				background = &amp;#039;transparent&amp;#039;,&lt;br /&gt;
				border     = &amp;#039;none&amp;#039;,&lt;br /&gt;
				color      = &amp;#039;var(--color-emphasized, #101418)&amp;#039;,&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if show_result then&lt;br /&gt;
		local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments}&lt;br /&gt;
		ret = ret .. &amp;quot; → &amp;quot; .. result&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if expand then&lt;br /&gt;
		local query = mw.text.encode(&amp;#039;{{&amp;#039; .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, &amp;quot;|&amp;quot;) .. &amp;#039;}}&amp;#039;)&lt;br /&gt;
		local url = mw.uri.fullUrl(&amp;#039;special:ExpandTemplates&amp;#039;, &amp;#039;wpInput=&amp;#039; .. query)&lt;br /&gt;
		mw.log()&lt;br /&gt;
		ret = ret .. &amp;quot; [&amp;quot; .. tostring(url) .. &amp;quot;]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.nowrap) then&lt;br /&gt;
		templateStyles.nowrap = true&lt;br /&gt;
		table.insert(classes, &amp;#039;nowrap&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tagName or #classes &amp;gt; 0 or css then&lt;br /&gt;
		local span = mw.html.create(tagName or &amp;#039;span&amp;#039;)&lt;br /&gt;
			:addClass(table.concat(classes, &amp;#039; &amp;#039;))&lt;br /&gt;
			:wikitext(ret)&lt;br /&gt;
&lt;br /&gt;
		if css then&lt;br /&gt;
			span:css(css)&lt;br /&gt;
		end&lt;br /&gt;
		ret = tostring(span:allDone())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ts = {}&lt;br /&gt;
	if templateStyles.mono then&lt;br /&gt;
		table.insert(ts, mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
			args = { src = &amp;#039;Template:Mono/styles.css&amp;#039; }&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if templateStyles.nowrap then&lt;br /&gt;
		table.insert(ts, mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
			args = { src = &amp;#039;Template:Nowrap/styles.css&amp;#039; }&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if yesno(args.debug) then&lt;br /&gt;
		ret = ret .. &amp;#039;\n&amp;lt;pre&amp;gt;&amp;#039; .. mw.text.encode(mw.dumpObject(args)) .. &amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(ts) .. ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>mediawikiwiki&gt;Pppery</name></author>
	</entry>
</feed>