Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Humanipedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Infobox/utilities
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
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 that happened, the infobox returned plain wikitext [[s:fr:Salammbô|]] which should have been a functioning link. Placing that wikilink in the article body and previewing produced a working inter-language/inter-project link. {{#invoke:Infobox/utilities|interlang_wikisource_link_make|{{{orig_lang_code|}}}|{{{native_wikisource|}}}|{{{title_orig|}}}|{{{name|}}} }} ]=] 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 <orig_lang_code>; only language tags known to MediaWiki allowed if '' == orig_lang_name then -- empty string when <orig_lang_code> invalid return '<span style="color:#d33">invalid language tag: <span style="font-family:monospace">' .. orig_lang_code .. '</span></span>'; end local out_t = {}; -- output goes here table.insert (out_t, '[[s:'); -- open inter-language/inter-project wikilink table.insert (out_t, orig_lang_code); -- the language tag table.insert (out_t, ':'); -- add the required separator table.insert (out_t, native_wikisource); -- insert wikisource title 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 = {lang_mod._lang ({orig_lang_code, table.concat (out_t)})}; -- replace content of out_t with a big string of its contents wrapped in {{lang}} 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 done end --[[--------------------------< 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 = { ['zh'] = true, ['cdo'] = true, ['cjy'] = true, ['cmn'] = true, -- Chinese language codes ['cpi'] = true, ['cpx'] = true, ['czh'] = true, ['czo'] = true, ['gan'] = true, ['hak'] = true, ['hsn'] = true, ['ltc'] = true, ['lzh'] = true, ['mnp'] = true, ['nan'] = true, ['och'] = true, ['wuu'] = true, ['yue'] = true, ['zhx'] = true, ['ja'] = true, ['jpx'] = true, ['ojp'] = true, -- Japanese language codes ['ko'] = true, ['okm'] = true, ['oko'] = true, -- Korean language codes } return cjk[code] or false; end --[[--------------------------< S E T _ I T A L I C S >-------------------------------------------------------- Created for use with Template:Infobox book and Template:Infobox document and perhaps others to replace hard-coded italic markup in the call to {{lang}}. This module attempts to make sure that {{lang}} correctly applies italic markup according to MOS:FOREIGNITALIC. |italics={{#invoke:Infobox/utilities|set_italics|{{{orig_lang_code|}}}|{{{title_orig}}}}}}} ]] local function set_italics (frame) local args=getArgs(frame); local code = args[1] or args['code'] or ''; -- empty string causes 'yes' return; {{lang}} will handle the missing code error local text = args[2] or args['text'] or ''; -- empty string causes 'yes' return; {{lang}} 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 yes end --[[--------------------------< C O M P >---------------------------------------------------------------------- compare function for result{} table descending sort ]] local function comp (a, b) return tonumber (a[1]) > tonumber (b[1]); end --[[--------------------------< S O R T _ C O M M O N >-------------------------------------------------------- common function to render sorted distribution, ethnicity, and occupation lists. inputs: result - table of percentages and labels ref - value from |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 ({result[1], ref and ref or ''}); -- add reference(s) from |<list> ref= to first item in the list return frame:expandTemplate { title = 'Unbulleted list', args = result}; -- render the unbulleted list end --[[--------------------------< D I S R I B U T I O N _ S O R T >---------------------------------------------- {{#invoke:Infobox/utilities|distribution_sort|{{{percent urban|}}}|{{{percent rural|}}}|{{{distribution ref|}}} }} ]] local function distribution_sort (frame) local args=getArgs(frame); local result = { -- initialize; table will be sorted according to values in result[n][1] {args[1], '% urban'}, {args[2], '% rural'}, }; return sort_common (result, args[#result+1], frame); end --[[--------------------------< E T H N I C I T Y _ S O R T >-------------------------------------------------- {{#invoke:Infobox/utilities|ethnicity_sort|{{{percent white|}}}|{{{percent black|}}}|{{{percent asian|}}}|{{{percent hispanic|}}}|{{{percent native american|}}}|{{{percent native hawaiian|}}}|{{{percent more than one race|}}}|{{{percent other race|}}}|{{{ethnicity ref|}}} }} ]] local function ethnicity_sort (frame) local args=getArgs(frame); local result = { -- initialize; table will be sorted according to values in result[n][1] {args[1], '% [[White Americans|White]]'}, {args[2], '% [[African Americans|Black]]'}, {args[3], '% [[Asian Americans|Asian]]'}, {args[4], '% [[Hispanic and Latino Americans|Hispanic]]'}, {args[5], '% [[Native Americans in the United States|Native American]]'}, {args[6], '% [[Pacific Islander Americans]]'}, {args[7], '% [[Multiracial Americans|Two or more races]]'}, {args[8], '% other'}, -- TODO: make other always last? }; return sort_common (result, args[#result+1], frame); end --[[--------------------------< O C C U P A T I O N _ S O R T >------------------------------------------------ {{#invoke:Infobox/utilities|distribution_sort|{{{percent blue collar|}}}|{{{percent white collar|}}}|{{{percent grey collar|}}}|{{{occupation ref|}}} }} ]] local function occupation_sort (frame) local args=getArgs(frame); local result = { -- initialize; table will be sorted according to values in result[n][1] {args[1], '% [[Blue-collar worker|Blue-collar]]'}, {args[2], '% [[White-collar worker|White-collar]]'}, {args[3], '% [[Gray-collar]]'}, }; 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 { distribution_sort = distribution_sort, -- {{Infobox U.S. congressional district}} ethnicity_sort = ethnicity_sort, occupation_sort = occupation_sort, set_italics = set_italics, -- {{Infobox book}} interlang_wikisource_link_make = interlang_wikisource_link_make, }
Summary:
Please note that all contributions to Humanipedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Humanipedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Template link expanded
(
edit
)
Template:Tlx
(
edit
)
Module:Arguments
(
edit
)
Module:Infobox/utilities/doc
(
edit
)
Module:Template link general
(
edit
)