<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Afamily_tree%2Fetymology_languages</id>
	<title>Module:family tree/etymology languages - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Afamily_tree%2Fetymology_languages"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:family_tree/etymology_languages&amp;action=history"/>
	<updated>2026-04-03T22:53:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:family_tree/etymology_languages&amp;diff=233363&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local language_codes = require &quot;Module:languages/code to canonical name&quot;  local function determine_preferred_etymology_language_code(code1, code2) 	if code2:find &quot;^[%a-]+$&quot; th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:family_tree/etymology_languages&amp;diff=233363&amp;oldid=prev"/>
		<updated>2021-08-08T17:38:03Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local language_codes = require &amp;quot;Module:languages/code to canonical name&amp;quot;  local function determine_preferred_etymology_language_code(code1, code2) 	if code2:find &amp;quot;^[%a-]+$&amp;quot; th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local language_codes = require &amp;quot;Module:languages/code to canonical name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function determine_preferred_etymology_language_code(code1, code2)&lt;br /&gt;
	if code2:find &amp;quot;^[%a-]+$&amp;quot; then&lt;br /&gt;
		if code1:find &amp;quot;^[%a-]+$&amp;quot; then&lt;br /&gt;
			if not code2:find &amp;quot;%u%l&amp;quot; then&lt;br /&gt;
				if not code1:find &amp;quot;%u%l&amp;quot; then&lt;br /&gt;
					if #code2 &amp;lt; #code1 then&lt;br /&gt;
						return code2&lt;br /&gt;
					else&lt;br /&gt;
						-- Prefer nrf-grn and nrf-jer over roa-grn and roa-jer&lt;br /&gt;
						-- (Guernsey and Jersey).&lt;br /&gt;
						local first_word1, first_word2 =&lt;br /&gt;
							code1:match &amp;quot;^[a-z]+&amp;quot;, code2:match &amp;quot;^[a-z]+&amp;quot;&lt;br /&gt;
						if first_word1 and first_word2&lt;br /&gt;
						and language_codes[first_word1] then&lt;br /&gt;
							return code1&lt;br /&gt;
						else&lt;br /&gt;
							return code2&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					return code2&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				return code1&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return code2&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return code1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fold(t, accum, func)&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		accum = func(k, v, accum)&lt;br /&gt;
	end&lt;br /&gt;
	return accum&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function invert(t)&lt;br /&gt;
	local inverted = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		inverted[v] = k&lt;br /&gt;
	end&lt;br /&gt;
	return inverted&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return invert(fold(&lt;br /&gt;
	require &amp;quot;Module:etymology languages/data&amp;quot;,&lt;br /&gt;
	{},&lt;br /&gt;
	function (code, data, data_to_code)&lt;br /&gt;
		if data_to_code[data] then&lt;br /&gt;
			local preferred_code = determine_preferred_etymology_language_code(data_to_code[data], code)&lt;br /&gt;
			data_to_code[data] = preferred_code&lt;br /&gt;
			table.insert(data.codes, code)&lt;br /&gt;
		else&lt;br /&gt;
			data_to_code[data] = code&lt;br /&gt;
			data.codes = { code }&lt;br /&gt;
		end&lt;br /&gt;
		return data_to_code&lt;br /&gt;
	end))&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>