Difference between revisions of "Module:Language/data/ISO 639-1/make"

From blackwiki
Jump to navigation Jump to search
blackwiki>BrandonXLF
blackwiki>Trappist the monk
(consistent with other ISO 639 language modules;)
Line 1: Line 1:
 
getArgs = require('Module:Arguments').getArgs
 
getArgs = require('Module:Arguments').getArgs
 +
 +
 +
--[[--------------------------< I S O _ 2 _ N A M E _ E X T R A C T >------------------------------------------
 +
 +
{{#invoke:Language/data/ISO 639-1/make|extract|file-date=2020-07-17}}
 +
 +
Reads Module:Language/data/iana languages and extract ISO 639-1 codes with their associated languge names.
 +
An alternate data source may be provided using positional parameter 1 (args[1] or {{{1}}})
 +
 +
]]
 +
 
function extract (frame)
 
function extract (frame)
 
local export = {}
 
local export = {}
 
local args = getArgs(frame)
 
local args = getArgs(frame)
local data = args[1] or 'Module:Language/data/iana languages'
+
local data = mw.loadData (args[1] or 'Module:Language/data/iana languages')
local data = mw.loadData(data)
+
 
for k,v in pairs(data) do
+
local file_date = 'File-Date: ' .. (args["file-date"] or ''); -- set the file date line from |file-date= (from the top of the source page)
if k == mw.ustring.match(k,'%a%a') then
+
 
local temp = '["'..k..'"] = {'
+
for k, v in pairs (data) do
for key,value in pairs(v) do
+
if 2 == k:len() then
temp = temp..'"'..value..'", '
+
local temp = {};
 +
for key, value in ipairs (v) do
 +
table.insert (temp, table.concat ({'\"', value, '\"'})) -- quoted language name
 
end
 
end
temp = temp..'},<br />'
+
table.insert (export, table.concat ({'["'..k..'"] = {', -- index + table open
temp = mw.ustring.gsub(temp,', }','}')
+
table.concat (temp, ', '), -- comma separated list of language names
table.insert(export,temp)
+
'}' -- table close
 +
}))
 
end
 
end
 
end
 
end
table.sort(export)
+
return 'return {<br />'..table.concat(export)..'}'
+
table.sort (export) -- sort by language codes
 +
 +
return "<br /><pre>-- " .. file_date .. "<br />return {<br />&#9;" .. table.concat (export, ',<br />&#9;') .. "<br />&#9;}<br />" .. "</pre>";
 
end
 
end
return {extract = extract}
+
 
 +
 
 +
--[[--------------------------< E X P O R T E D  F U N C T I O N S >------------------------------------------
 +
]]
 +
 
 +
return {
 +
extract = extract
 +
}

Revision as of 15:06, 21 September 2020

Used to create Module:Language/data/ISO 639-1. By default gets it data from Module:Language/data/iana languages, but can be changed by setting parameter 1 to the desired input. The module only adds table values with a key that has two letters in it.

Talk page of this module is usurped to render the source for Module:Language/data/ISO 639-1. Discuss this module at Template talk:Lang.


getArgs = require('Module:Arguments').getArgs


--[[--------------------------< I S O _ 2 _ N A M E _ E X T R A C T >------------------------------------------

{{#invoke:Language/data/ISO 639-1/make|extract|file-date=2020-07-17}}

 Reads Module:Language/data/iana languages and extract ISO 639-1 codes with their associated languge names.
 An alternate data source may be provided using positional parameter 1 (args[1] or {{{1}}})

]]

function extract (frame)
	local export = {}
	local args = getArgs(frame)
	local data = mw.loadData (args[1] or 'Module:Language/data/iana languages')

	local file_date = 'File-Date: ' .. (args["file-date"] or '');				-- set the file date line from |file-date= (from the top of the source page)

	for k, v in pairs (data) do
		if 2 == k:len() then
			local temp = {};
			for key, value in ipairs (v) do
				table.insert (temp, table.concat ({'\"', value, '\"'}))			-- quoted language name
			end
			table.insert (export, table.concat ({'["'..k..'"] = {',				-- index + table open
				table.concat (temp, ', '),										-- comma separated list of language names
				'}'																-- table close
				}))
		end
	end
	
	table.sort (export)															-- sort by language codes
	
	return "<br /><pre>-- " .. file_date .. "<br />return {<br />&#9;" .. table.concat (export, ',<br />&#9;') .. "<br />&#9;}<br />" .. "</pre>";
end


--[[--------------------------< E X P O R T E D   F U N C T I O N S >------------------------------------------
]]

return {
	extract = extract
	}