<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.digitalcellulose.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AList_of_languages</id>
	<title>Module:List of languages - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.digitalcellulose.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AList_of_languages"/>
	<link rel="alternate" type="text/html" href="http://www.digitalcellulose.com/wiki/index.php?title=Module:List_of_languages&amp;action=history"/>
	<updated>2026-07-05T05:23:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://www.digitalcellulose.com/wiki/index.php?title=Module:List_of_languages&amp;diff=98211&amp;oldid=prev</id>
		<title>Adminsuzy: Created page with &quot;local m_families = mw.loadData(&quot;Module:families/data&quot;)  local export = {} local filters = {}  function export.count(frame) 	local m_languages = mw.loadData(&quot;Module:languages/a...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.digitalcellulose.com/wiki/index.php?title=Module:List_of_languages&amp;diff=98211&amp;oldid=prev"/>
		<updated>2018-08-27T20:05:41Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local m_families = mw.loadData(&amp;quot;Module:families/data&amp;quot;)  local export = {} local filters = {}  function export.count(frame) 	local m_languages = mw.loadData(&amp;quot;Module:languages/a...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local m_families = mw.loadData(&amp;quot;Module:families/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local export = {}&lt;br /&gt;
local filters = {}&lt;br /&gt;
&lt;br /&gt;
function export.count(frame)&lt;br /&gt;
	local m_languages = mw.loadData(&amp;quot;Module:languages/alldata&amp;quot;)&lt;br /&gt;
	local c = 0&lt;br /&gt;
	for _ in pairs(m_languages) do&lt;br /&gt;
		c = c + 1&lt;br /&gt;
	end&lt;br /&gt;
	return c&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.show(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local filter_name = args[1]&lt;br /&gt;
	local filter = filters[filter_name]&lt;br /&gt;
	local arg2 = args[2]&lt;br /&gt;
	local ids = args[&amp;quot;ids&amp;quot;]; if not ids or ids == &amp;quot;&amp;quot; then ids = false else ids = true end&lt;br /&gt;
		&lt;br /&gt;
	local fun = require(&amp;quot;Module:fun&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local deepcopy = require(&amp;quot;Module:table&amp;quot;).deepcopy&lt;br /&gt;
	local function copy(t)&lt;br /&gt;
		return deepcopy(t, true) -- omit metatables&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local m_languages&lt;br /&gt;
	local use_filter = false&lt;br /&gt;
	&lt;br /&gt;
	-- Choose a data module.&lt;br /&gt;
	if filter_name == &amp;quot;two-letter code&amp;quot; then&lt;br /&gt;
		m_languages = mw.loadData(&amp;quot;Module:languages/data2&amp;quot;)&lt;br /&gt;
		if arg2 then&lt;br /&gt;
			use_filter = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif filter_name == &amp;quot;three-letter code&amp;quot; then&lt;br /&gt;
		if arg2 and arg2:find(&amp;quot;^[a-z]$&amp;quot;) then&lt;br /&gt;
			m_languages = mw.loadData(&amp;quot;Module:languages/data3/&amp;quot; .. arg2)&lt;br /&gt;
		else&lt;br /&gt;
			m_languages = mw.loadData(&amp;quot;Module:languages/alldata&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	elseif filter_name == &amp;quot;exceptional&amp;quot; then&lt;br /&gt;
		m_languages = mw.loadData(&amp;quot;Module:languages/datax&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		m_languages = mw.loadData(&amp;quot;Module:languages/alldata&amp;quot;)&lt;br /&gt;
		use_filter = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Select language codes to display.&lt;br /&gt;
	local data_tables = {}&lt;br /&gt;
	if use_filter then&lt;br /&gt;
		filter = filter(arg2)&lt;br /&gt;
		data_tables = fun.filter(filter, m_languages)&lt;br /&gt;
	else&lt;br /&gt;
		data_tables = m_languages&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Now go over each code, and create table rows for those that are selected&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local row_i = 1&lt;br /&gt;
	&lt;br /&gt;
	local function link_script(script)&lt;br /&gt;
		return &amp;quot;[[Wiktionary:List of scripts#&amp;quot; .. script .. &amp;quot;|&amp;lt;code&amp;gt;&amp;quot; .. script .. &amp;quot;&amp;lt;/code&amp;gt;]]&amp;quot;&lt;br /&gt;
	end	&lt;br /&gt;
	&lt;br /&gt;
	for code, data in require(&amp;quot;Module:table&amp;quot;).sortedPairs(data_tables) do&lt;br /&gt;
		local canonicalName, family, scripts = data[1], data[3], data.scripts&lt;br /&gt;
		local row = {&lt;br /&gt;
			&amp;quot;\n|-\n|&amp;quot;, (ids and &amp;quot; id=\&amp;quot;&amp;quot; .. code .. &amp;quot;\&amp;quot;|&amp;quot; or &amp;quot;&amp;quot;), &amp;quot;&amp;lt;code&amp;gt;&amp;quot;, code, &amp;quot;&amp;lt;/code&amp;gt;&amp;quot;,&lt;br /&gt;
			&amp;quot;\n| [[:Category:&amp;quot;, canonicalName, (canonicalName:find(&amp;quot;[Ll]anguage$&amp;quot;) and &amp;quot;&amp;quot; or &amp;quot; language&amp;quot;), &amp;quot;|&amp;quot;, canonicalName, &amp;quot;]]&amp;quot;,&lt;br /&gt;
			&amp;quot;\n|&amp;quot;, (family and family ~= &amp;quot;qfa-und&amp;quot; and (&amp;quot;[[Wiktionary:List of families#%s|%s]]&amp;quot;):format(family, m_families[family] and m_families[family].canonicalName or (&amp;quot;&amp;lt;code&amp;gt;&amp;quot; .. family .. &amp;quot;&amp;lt;/code&amp;gt;&amp;quot;)) or &amp;quot;&amp;quot;),&lt;br /&gt;
			&amp;quot;\n|&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if scripts and scripts[1] ~= &amp;quot;None&amp;quot; then&lt;br /&gt;
			table.insert(&lt;br /&gt;
				row,&lt;br /&gt;
				table.concat(&lt;br /&gt;
					fun.map(&lt;br /&gt;
						link_script,&lt;br /&gt;
						scripts),&lt;br /&gt;
					&amp;quot;, &amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(row, &amp;quot;\n|&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		if data.otherNames then&lt;br /&gt;
			table.insert(row, table.concat(copy(data.otherNames), &amp;quot;, &amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(row,&lt;br /&gt;
			&amp;quot;\n| &amp;quot; .. (data.sort_key and &amp;quot;Yes&amp;quot; or &amp;quot;&amp;quot;) ..&lt;br /&gt;
			&amp;quot;\n| &amp;quot; .. (data.entry_name and &amp;quot;Yes&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
		)&lt;br /&gt;
		&lt;br /&gt;
		rows[row_i] = table.concat(row)&lt;br /&gt;
		row_i = row_i + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat {&lt;br /&gt;
[[&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Code&lt;br /&gt;
! Canonical name&lt;br /&gt;
! Family&lt;br /&gt;
! style=&amp;quot;width: 12em&amp;quot; | Scripts&lt;br /&gt;
! Other names&lt;br /&gt;
! Sort?&lt;br /&gt;
! Diacr?]], table.concat(rows), &amp;quot;\n|}&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Filter functions&lt;br /&gt;
-- They receive parameter 2 as argument and generate a new function.&lt;br /&gt;
-- This function returns true or false depending on whether a given code&lt;br /&gt;
-- should be included in the table or not.&lt;br /&gt;
-- They're used to build shorter sublists.&lt;br /&gt;
-- The arguments are in the order &amp;quot;data, code&amp;quot; because the filter function in&lt;br /&gt;
-- [[Module:fun]] supplies arguments to it in the order value, key.&lt;br /&gt;
&lt;br /&gt;
filters[&amp;quot;two-letter code&amp;quot;] = function (firstletter)&lt;br /&gt;
	local pattern = &amp;quot;^&amp;quot; .. (firstletter or &amp;quot;[a-z]&amp;quot;) .. &amp;quot;[a-z]$&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	return function (data, code)&lt;br /&gt;
		return code:find(pattern) ~= nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
filters[&amp;quot;type&amp;quot;] = function (type)&lt;br /&gt;
	return function (data, code)&lt;br /&gt;
		return data.type == type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
filters[&amp;quot;subst&amp;quot;] = function (arg2)&lt;br /&gt;
	return function (data, code)&lt;br /&gt;
		return data.sort_key or data.entry_name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
filters[&amp;quot;special&amp;quot;] = function (arg2)&lt;br /&gt;
	return function (data, code)&lt;br /&gt;
		return data.family == &amp;quot;qfa-not&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
function export.show_etym(frame)&lt;br /&gt;
	local m_languages = mw.loadData(&amp;quot;Module:languages/alldata&amp;quot;)&lt;br /&gt;
	local m_etym_data = require('Module:etymology_languages/data') -- this probably HAS to be a require here&lt;br /&gt;
	local codes_list = {}&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for code, data in pairs(m_etym_data) do&lt;br /&gt;
		if not codes_list[data] then&lt;br /&gt;
			codes_list[data] = {}&lt;br /&gt;
			table.insert(items, data)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(codes_list[data], code)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.sort(items, function (apple, orange)&lt;br /&gt;
		return apple.canonicalName &amp;lt; orange.canonicalName&lt;br /&gt;
	end)&lt;br /&gt;
&lt;br /&gt;
	local function make_parent_link(code)&lt;br /&gt;
		if m_languages[code] then&lt;br /&gt;
			return ('[[Wiktionary:List of languages#%s|%s]]'):format(code, m_languages[code][1])&lt;br /&gt;
		elseif m_families[code] then&lt;br /&gt;
			return ('[[Wiktionary:List of families#%s|%s family]]'):format(code, m_families[code].canonicalName)&lt;br /&gt;
		elseif m_etym_data[code] then&lt;br /&gt;
			return ('[[Wiktionary:List of languages/special#%s|%s]]'):format(code, m_etym_data[code].canonicalName)&lt;br /&gt;
		elseif code then&lt;br /&gt;
			return '&amp;lt;code&amp;gt;' .. code .. '&amp;lt;/code&amp;gt;'&lt;br /&gt;
		else&lt;br /&gt;
			return '[missing]'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	for i, data in ipairs(items) do&lt;br /&gt;
		local codes = codes_list[data]&lt;br /&gt;
		table.sort(codes)&lt;br /&gt;
		&lt;br /&gt;
		for i, code in ipairs(codes) do&lt;br /&gt;
			codes[i] = '&amp;lt;code id=&amp;quot;' .. code .. '&amp;quot;&amp;gt;' .. code .. '&amp;lt;/code&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(rows,&lt;br /&gt;
			' \n' ..&lt;br /&gt;
			'| ' .. table.concat(codes, &amp;quot;, &amp;quot;) .. '\n' ..&lt;br /&gt;
			'| [[:Category:Terms derived from ' .. data.canonicalName .. '|' .. data.canonicalName .. ']]\n' ..&lt;br /&gt;
			'| ' .. (data.otherNames and table.concat(data.otherNames, &amp;quot;, &amp;quot;) or &amp;quot;&amp;quot;) .. '\n' ..&lt;br /&gt;
			'| ' .. make_parent_link(data.parent)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&amp;quot;{| class=\&amp;quot;wikitable sortable\&amp;quot;\n&amp;quot; ..&lt;br /&gt;
		&amp;quot;! Codes\n&amp;quot; ..&lt;br /&gt;
		&amp;quot;! Canonical name\n&amp;quot; ..&lt;br /&gt;
		&amp;quot;! Other names\n&amp;quot; ..&lt;br /&gt;
		&amp;quot;! Parent\n&amp;quot; ..&lt;br /&gt;
		&amp;quot;|-&amp;quot; .. table.concat(rows, &amp;quot;\n|-&amp;quot;) .. &amp;quot;\n|}&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Adminsuzy</name></author>
		
	</entry>
</feed>