Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Infobox/utilities
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 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}} }
Summary:
Please note that all contributions to Stockhub 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
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Tlx
(
edit
)
Module:Arguments
(
edit
)
Module:Infobox/utilities/doc
(
edit
)
Module:Template link general
(
edit
)