Module:Sandbox/BrandonXLF/1: Difference between revisions

Content deleted Content added
Replaced content with '-- Keep Here'
Tag: Replaced
No edit summary
Line 1:
-- Keep Here
--[=[
{{#invoke:Language/name/data/ISO 639-3 data extraction tool|ISO_639_3_extract|file-date=20170217}}
 
reads a local copy of iso-639-3_Name_Index_YYYYMMDD.tab where (YYYYMMDD is the release date). Download that file
in zip form from http://www-01.sil.org/iso639-3/download.asp (use the UTF-8 zip)
 
useful lines in the file have the form:
<id>\t<name>\t<inverted name>\n
where:
<id> is the three-character ISO 639-3 language code
<name> is the language 'name'
<inverted name> is the language in 'last-name, first-name(s)' form; this part ignored
like this:
aaq Eastern Abnaki Abnaki, Eastern
 
when a language code has more than one name, the code is repeated for each additional name:
rar Cook Islands Maori Maori, Cook Islands
rar Rarotongan Rarotongan
 
]=]
 
function p.ISO_639_3_extract (frame)
local page = mw.title.getCurrentTitle(); -- get a page object for this page
local content = page:getContent(); -- get unparsed content
local lang_table = {}; -- languages go here
 
local code;
local names;
 
local file_date = 'File-Date: ' .. frame.args["file-date"]; -- set the file date line from |file-date=
 
for code, name in mw.ustring.gmatch (content, '(%a+)') do -- get code and 'forward' name
if code then
if string.find (lang_table[#lang_table] or '', '^%[\"' .. code) then -- if this is an additional name for code ('or' empty string for first time when lang_table[#lang_table] is nil)
lang_table[#lang_table] = mw.ustring.gsub (lang_table[#lang_table], '}$', ''); -- remove trailing brace from previous name
lang_table[#lang_table] = lang_table[#lang_table] .. ', \"' .. name .. '\"}'; -- add this name with new brace
else
table.insert (lang_table, "[\"" .. code .. "\"] = {\"" .. name .. "\"}"); -- make new table entry
end
elseif not code then
table.insert (lang_table, "[\"error\"] = {" .. record .. "}"); -- code should never be nil, but inserting an error entry in the final output can be helpful
end
end
-- make pretty output
return "<br /><pre>-- " .. file_date .. "<br />return {<br />&#9;" .. table.concat (lang_table, ',<br />&#9;') .. "<br />&#9;}<br />" .. "</pre>";
end
 
return p;