Module:Infobox/utilities explained

require('strict');local getArgs = require ('Module:Arguments').getArgs;

--[=[--------------------------< I N T E R L A N G _ W I K I S O U R C E _ L I N K _ M A K E >------------------ created as a test function to figure out why the wikitext for |data36= in [[Special:Permalink/1236589613|this version]]of the template doesn't work in Salammbô when |title_orig= exists but does not have a value. When thathappened, the infobox returned plain wikitext which should have been a functioning link.Placing that wikilink in the article body and previewing produced a working inter-language/inter-project link.

]=]

local function interlang_wikisource_link_make (frame) local lang_mod = require ('Module:Lang'); -- used to wrap non-English wikisource links in proper html markup

local args_t = getArgs (frame); -- parameter values that are emptyspace or only white space are converted to nil local orig_lang_code = args_t[1]; -- 'all of them sensible everyday names' local native_wikisource = args_t[2]; local title_orig = args_t[3]; local name = args_t[4];

local orig_lang_name = mw.language.fetchLanguageName (orig_lang_code, 'en'); -- get the English name associated with ; only language tags known to MediaWiki allowed if

orig_lang_name then -- empty string when invalid return '

invalid language tag: ' .. orig_lang_code .. ''; end

local out_t = ; -- output goes here table.insert (out_t, ''); -- done with link; start label table.insert (out_t, title_orig or name or mw.title.getCurrentTitle.baseText); -- insert the label table.insert (out_t, ''); -- close inter-language/inter-project wikilink out_t = ; -- replace content of out_t with a big string of its contents wrapped in

table.insert (out_t, ' at '); -- begin other language wikisource wikilinklink table.insert (out_t, orig_lang_name); -- add the MediaWiki-known language name associated with |orig_lang_code= table.insert (out_t, ' Wikisource'); -- insert wikisource link static text return table.concat (out_t); -- make a big string of all and doneend

----------------------------< I S _ C J K _ C O D E >--------------------------------------------------------

return true if code is one of the listed Chinese, Japanese, Korean ISO 639 codes, false else.

local function is_cjk_code (code)local cjk =

return cjk[code] or false;end

--italics=}}

local function set_italics (frame) local args=getArgs(frame); local code = args[1] or args['code'] or ; -- empty string causes 'yes' return; will handle the missing code error local text = args[2] or args['text'] or ; -- empty string causes 'yes' return; will handle the missing text error

local is_latn = require ("Module:Unicode data").is_Latin; code = code:gsub ('^(%a+).*', '%1'); -- strip subtags from IETF tag to leave just the language subtag if is_cjk_code (code) and not is_latn (text) then -- is_latn is in Module:Unicode data return 'no'; -- only case for 'no' end return 'yes'; -- everything else is yesend

----------------------------< C O M P >----------------------------------------------------------------------

compare function for result table descending sort

local function comp (a, b) return tonumber (a[1]) > tonumber (b[1]);end

--distribution ref=, |ethnicity ref=, or |occupation ref= as appropriate frame - calling frame required for expandTemplate returns sorted list on success; empty string else

local function sort_common (result, ref, frame) for i=#result, 1, -1 do if not tonumber (result[i][1]) then -- if cannot be converted to a number table.remove (result, i); -- delete end end if 0

#result then -- if we get here and the result table is empty return ; -- abandon returning empty string end table.sort (result, comp); -- sort what remains

for i, v in ipairs (result) do result[i] = table.concat (result[i]); -- make each table in result a string end

result[1] = table.concat ; -- add reference(s) from | ref= to first item in the list return frame:expandTemplate ; -- render the unbulleted listend

--distribution_sort||| }}

local function distribution_sort (frame) local args=getArgs(frame); local result = ; return sort_common (result, args[#result+1], frame);end

--ethnicity_sort||||||||| }}

local function ethnicity_sort (frame) local args=getArgs(frame); local result = ; return sort_common (result, args[#result+1], frame);end

--distribution_sort|||| }}

local function occupation_sort (frame) local args=getArgs(frame); local result = ; return sort_common (result, args[#result+1], frame)end

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

return