Module:Lang/utilities

require ('Module:No globals'); local is_latn = require ("Module:Unicode data").is_Latin; local p={}

--[[--< I S _ C J K >--

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. This module attempts to make sure that correctly applies italic markup according to MOS:FOREIGNITALIC.

]]

function p.set_italics (frame) local code = frame.args[1] or frame.args['code'] or '';						-- empty string causes 'yes' return; will handle the missing code error local text = frame.args[2] or frame.args['text'] or '';						-- empty string causes 'yes' return; will handle the missing text error if is_cjk_code (code) and not is_latn (text) then							-- is_latn is in Module:Lang return 'no';															-- only case for 'no' end return 'yes';																-- everything else is yes end

return p;