Module:Lang/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 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, }