<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://youjo.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ATemplate%3Aalso</id>
	<title>Module:Template:also - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://youjo.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ATemplate%3Aalso"/>
	<link rel="alternate" type="text/html" href="https://youjo.wiki/index.php?title=Module:Template:also&amp;action=history"/>
	<updated>2026-10-17T15:38:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://youjo.wiki/index.php?title=Module:Template:also&amp;diff=1558&amp;oldid=prev</id>
		<title>Chizu: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://youjo.wiki/index.php?title=Module:Template:also&amp;diff=1558&amp;oldid=prev"/>
		<updated>2022-09-23T19:42:24Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:42, 23 September 2022&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key youjowiki:diff::1.12:old-1557:rev-1558 --&gt;
&lt;/table&gt;</summary>
		<author><name>Chizu</name></author>
	</entry>
	<entry>
		<id>https://youjo.wiki/index.php?title=Module:Template:also&amp;diff=1557&amp;oldid=prev</id>
		<title>Wiktionary&gt;Svartava: +&quot;or frame.args&quot; at L33 (attn theknightwho)</title>
		<link rel="alternate" type="text/html" href="https://youjo.wiki/index.php?title=Module:Template:also&amp;diff=1557&amp;oldid=prev"/>
		<updated>2022-08-03T13:58:11Z</updated>

		<summary type="html">&lt;p&gt;+&amp;quot;or frame.args&amp;quot; at L33 (attn &lt;a href=&quot;/index.php?title=User:Theknightwho&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Theknightwho (page does not exist)&quot;&gt;theknightwho&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&amp;#039;Module:yesno&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local get_script&lt;br /&gt;
&lt;br /&gt;
-- If there are characters in both scripts (the key and value), the second&lt;br /&gt;
-- should be used.&lt;br /&gt;
local overridden_by = {&lt;br /&gt;
	Latn = &amp;quot;Latinx&amp;quot;,&lt;br /&gt;
	Grek = &amp;quot;polytonic&amp;quot;,&lt;br /&gt;
	Cyrl = &amp;quot;Cyrs&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Join with serial &amp;quot;and&amp;quot; and serial comma&lt;br /&gt;
local function serial_comma_join(seq, conjunction)&lt;br /&gt;
	conjunction = conjunction or &amp;quot;,&amp;quot;&lt;br /&gt;
	if #seq == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	elseif #seq == 1 then&lt;br /&gt;
		return seq[1] -- nothing to join&lt;br /&gt;
	elseif #seq == 2 then&lt;br /&gt;
		return seq[1] .. &amp;quot; &amp;#039;&amp;#039;and&amp;#039;&amp;#039; &amp;quot; .. seq[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(seq, conjunction .. &amp;quot; &amp;quot;, 1, #seq - 1)&lt;br /&gt;
			.. &amp;quot;&amp;lt;span class=&amp;#039;serial-comma&amp;#039;&amp;gt;&amp;quot; .. conjunction .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; ..&lt;br /&gt;
			&amp;quot;&amp;#039;&amp;#039;&amp;lt;span class=&amp;#039;serial-and&amp;#039;&amp;gt; and&amp;lt;/span&amp;gt;&amp;#039;&amp;#039; &amp;quot; ..&lt;br /&gt;
			seq[#seq]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.main(frame)&lt;br /&gt;
	local args			= frame:getParent().args or frame.args&lt;br /&gt;
	&lt;br /&gt;
	local sc_default	= args[&amp;quot;sc&amp;quot;]&lt;br /&gt;
	local nosc			= yesno(args[&amp;quot;nosc&amp;quot;])&lt;br /&gt;
	if nosc then&lt;br /&gt;
		require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/nosc param&amp;quot;)&lt;br /&gt;
		if sc_default then&lt;br /&gt;
			error(&amp;quot;|nosc= and |sc= are mutually contradictory. Specify one or the other.&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			-- Turn off script by setting default script to None.&lt;br /&gt;
			sc_default = &amp;quot;None&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if sc_default then&lt;br /&gt;
		-- [[Special:WhatLinksHere/Template:tracking/also/sc param]]&lt;br /&gt;
		require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/sc param&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local uni_default = yesno((args[&amp;quot;uni&amp;quot;] == &amp;quot;auto&amp;quot;) or args[&amp;quot;uni&amp;quot;]) and &amp;quot;auto&amp;quot; or nil&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	local full_pagename = title.fullText&lt;br /&gt;
	-- Disables tagging outside of mainspace, where {{also}} more often links to&lt;br /&gt;
	-- pages that are not entries and don&amp;#039;t need tagging. Tagging in Reconstruction&lt;br /&gt;
	-- would be more complicated and is often unnecessary, and there are very few&lt;br /&gt;
	-- entries in Appendix.&lt;br /&gt;
	local detect_sc = title.nsText == &amp;quot;&amp;quot;&lt;br /&gt;
		or args[&amp;quot;detectsc&amp;quot;] -- to test the script detection capabilities&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local use_semicolon = false&lt;br /&gt;
	&lt;br /&gt;
	for i, arg in ipairs(args) do&lt;br /&gt;
		local uni = args[&amp;quot;uni&amp;quot; .. i] or uni_default&lt;br /&gt;
		local sc = args[&amp;quot;sc&amp;quot; .. i] or sc_default&lt;br /&gt;
		&lt;br /&gt;
		if arg:find(&amp;quot;,&amp;quot;, 1, true) then&lt;br /&gt;
			use_semicolon = true&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not yesno(uni, uni) then&lt;br /&gt;
			uni = nil&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local s&lt;br /&gt;
		local link_text = arg:match(&amp;quot;%[%[[^%[%]|]+|(.+)]]&amp;quot;) or arg:match(&amp;quot;%[%[([^%[%]|]+)]]&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		if link_text then&lt;br /&gt;
			s = arg&lt;br /&gt;
			arg = mw.text.decode(link_text)&lt;br /&gt;
		else&lt;br /&gt;
			s = &amp;quot;[[&amp;quot; .. arg .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			arg = mw.text.decode(arg)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local codepoint&lt;br /&gt;
		&lt;br /&gt;
		if uni then&lt;br /&gt;
			require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/uni&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			if uni == &amp;#039;auto&amp;#039; then&lt;br /&gt;
				codepoint = (mw.ustring.len(arg) == 1) and mw.ustring.codepoint(arg, 1, 1)&lt;br /&gt;
			else&lt;br /&gt;
				codepoint = tonumber(uni)&lt;br /&gt;
				&lt;br /&gt;
				if mw.ustring.len(arg) ~= 1 or codepoint ~= mw.ustring.codepoint(arg, 1, 1) then&lt;br /&gt;
					require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/uni/noauto&amp;quot;)&lt;br /&gt;
				else&lt;br /&gt;
					require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/uni/auto&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- If all characters are in one script, tag the link with it.&lt;br /&gt;
		-- Ignore all &amp;quot;None&amp;quot;-script characters.&lt;br /&gt;
		local rtl&lt;br /&gt;
		if detect_sc and not sc then&lt;br /&gt;
			-- leading bytes for non-Latin scripts (that is, codepoints between U+340 and U+10FFFF)&lt;br /&gt;
			if arg:find(&amp;quot;[\200-\244]&amp;quot;) then&lt;br /&gt;
				get_script = get_script or require(&amp;quot;Module:scripts&amp;quot;).charToScript&lt;br /&gt;
				local curr_sc&lt;br /&gt;
				for codepoint in mw.ustring.gcodepoint(arg) do&lt;br /&gt;
					curr_sc = get_script(codepoint)&lt;br /&gt;
					if curr_sc ~= &amp;quot;None&amp;quot; then&lt;br /&gt;
						if sc == nil then&lt;br /&gt;
							sc = curr_sc&lt;br /&gt;
						elseif curr_sc ~= sc then&lt;br /&gt;
							-- For instance, Grek -&amp;gt; polytonic.&lt;br /&gt;
							if overridden_by[sc] == curr_sc then&lt;br /&gt;
								sc = curr_sc&lt;br /&gt;
							&lt;br /&gt;
							-- For instance, Grek and Latn.&lt;br /&gt;
							elseif overridden_by[curr_sc] ~= sc then&lt;br /&gt;
								require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/no sc detected&amp;quot;)&lt;br /&gt;
								mw.log(&amp;quot;Module:Template:also found two scripts in &amp;quot; .. arg .. &amp;quot;: &amp;quot;&lt;br /&gt;
									.. sc .. &amp;quot; and &amp;quot; .. curr_sc .. &amp;quot;.&amp;quot;)&lt;br /&gt;
								sc = nil&lt;br /&gt;
								break&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				rtl = mw.loadData(&amp;quot;Module:scripts/data&amp;quot;)[sc]&lt;br /&gt;
				rtl = rtl and rtl.direction == &amp;quot;rtl&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				sc = &amp;quot;Latn&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if sc then&lt;br /&gt;
			s = &amp;#039;&amp;lt;b class=&amp;quot;&amp;#039; .. sc .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. s .. &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
			if rtl then&lt;br /&gt;
				s = s .. &amp;quot;&amp;amp;lrm;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			s = &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. s .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if codepoint then&lt;br /&gt;
			local m_unidata = require(&amp;#039;Module:Unicode data&amp;#039;)&lt;br /&gt;
			&lt;br /&gt;
			s = s .. (&amp;quot; &amp;lt;small&amp;gt;[U+%04X %s]&amp;lt;/small&amp;gt;&amp;quot;):format(&lt;br /&gt;
				codepoint,&lt;br /&gt;
				m_unidata.lookup_name(codepoint):gsub(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if arg ~= full_pagename then&lt;br /&gt;
			table.insert(items, s)&lt;br /&gt;
		else&lt;br /&gt;
			require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;also/pagename&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		table.insert(items, &amp;quot;{{{1}}}&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return (&amp;quot;&amp;lt;div class=\&amp;quot;disambig-see-also%s\&amp;quot;&amp;gt;&amp;#039;&amp;#039;See also:&amp;#039;&amp;#039; %s&amp;lt;/div&amp;gt;&amp;quot;):format(&lt;br /&gt;
		(#items == 2) and &amp;quot;-2&amp;quot; or &amp;quot;&amp;quot;,&lt;br /&gt;
		serial_comma_join(items, use_semicolon and &amp;quot;;&amp;quot; or &amp;quot;,&amp;quot;)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Wiktionary&gt;Svartava</name></author>
	</entry>
</feed>