Module:Lang/name to tag

From Zoophilia Wiki
Revision as of 20:50, 1 September 2020 by DogMike (talk | contribs) (Created page with "--[[--------------------------< N A M E - T O - T A G D A T A >---------------------------------------------- Creates name-to-tag tables from the data in Module:Language/na...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

This module creates language name (key) to language tag (value) support tables used by Module:Lang:

These reversed data tables are loaded and used by _tag_from_name().


--[[--------------------------< N A M E - T O - T A G   D A T A >----------------------------------------------

Creates name-to-tag tables from the data in Module:Language/name/data (from Module:Language/data/iana languages,
Module:Language/data/ISO 639-3, Module:Language/data/wp languages) and Module:Lang/data so that templates can
get language tags from the same names as the {{lang}} templates get from those tags.  The conversion prefers
ISO 639-1 codes.

]]

local rev_lang_name_table = {};													-- same as Module:Language/name/data except reversed so language name is key and language tag is value
local rev_lang_data = {};														-- same as Module:Lang/data except reversed

local raw_data = mw.loadData ('Module:Language/name/data')						-- load the data from the standard source module
for tag, name_table in pairs (raw_data.lang) do
	local name = name_table[1];													-- there can be multiple names, always take the first name
	name = name:gsub ('%s+%b()', ''):lower();									-- remove parenthetical disambiguators or qualifiers from names that have them
	if rev_lang_name_table[name] then											-- if already set
		if 2 == tag:len() then													-- is this is an ISO 639-1 code?
			rev_lang_name_table[name] = tag;									-- yes, overwrite ISO 639-3 language name (key) and tag (value) pair in the output table
		end
	else																		-- here when not yet set
		rev_lang_name_table[name] = tag;										-- add language name (key) and tag (value) pair to the output table
	end
end

raw_data = mw.loadData ('Module:Lang/data')										-- load the data from the override source module
for tag, name_table in pairs (raw_data.override) do
	local name = name_table[1];													-- there can be multiple names, always take the first name
	name = name:gsub ('%s+%b()', ''):lower();									-- remove parenthetical disambiguators or qualifiers from names that have them
	rev_lang_data[name] = tag;													-- add language name (key) and tag (value) pair to the output table
end

raw_data = {};																	-- init back to an empty table?

--[[--------------------------< E X P O R T E D   T A B L E S >------------------------------------------------
]]

return {
	rev_lang_name_table = rev_lang_name_table,
	rev_lang_data = rev_lang_data,
	}