Difference between revisions of "Module:Mw lang"

From blackwiki
Jump to navigation Jump to search
blackwiki>Trappist the monk
(create;)
 
blackwiki>Trappist the monk
Line 1: Line 1:
 +
require('Module:No globals');
 +
 +
 +
--[[--------------------------< E R R _ M S G _ M A K E >------------------------------------------------------
 +
]]
 +
 +
local function err_msg_make (msg)
 +
return '<span class="error" style="font-size:100%">error: language ' .. msg .. 'not recognized</span>'
 +
end
 +
 +
 
--[[--------------------------< C O D E _ T O _ N A M E >------------------------------------------------------
 
--[[--------------------------< C O D E _ T O _ N A M E >------------------------------------------------------
  
Line 8: Line 19:
  
 
local function code_to_name (frame)
 
local function code_to_name (frame)
local code = mw.language.fetchLanguageName (frame.args[1]:lower(), mw.getContentLanguage():getCode());
+
local name = mw.language.fetchLanguageName (frame.args[1]:lower(), mw.getContentLanguage():getCode());
return '' ~= code and code or 'error';
+
return '' ~= name and name or err_msg_make ('code: ' .. frame.args[1]);
 
end
 
end
  
Line 30: Line 41:
 
end
 
end
  
return name_list[name:lower()] or 'error'
+
return name_list[name] or err_msg_make ('name: ' .. frame.args[1])
 
end
 
end
  

Revision as of 15:09, 9 March 2020

Implements {{mw lang}}


require('Module:No globals');


--[[--------------------------< E R R _ M S G _ M A K E >------------------------------------------------------
]]

local function err_msg_make (msg)
	return '<span class="error" style="font-size:100%">error: language ' .. msg .. 'not recognized</span>'
end


--[[--------------------------< C O D E _ T O _ N A M E >------------------------------------------------------

module entry point

return language-name if language-code is a mediawiki recognized code; error message string else

]]

local function code_to_name (frame)
	local name = mw.language.fetchLanguageName (frame.args[1]:lower(), mw.getContentLanguage():getCode());
	return '' ~= name and name or err_msg_make ('code: ' .. frame.args[1]);
end


--[[--------------------------< N A M E _ T O _ C O D E >------------------------------------------------------

module entry point

return language-code if language-name is a mediawiki recognized name; error message string else

]]

local function name_to_code (frame)
	local name = frame.args[1]:lower();
	local source_list = mw.language.fetchLanguageNames(mw.getContentLanguage():getCode(), 'all');
	local name_list = {}
	
	for k, v in pairs (source_list) do
		name_list[v:lower()] = k;
	end

	return name_list[name] or err_msg_make ('name: ' .. frame.args[1])
end


--[[--------------------------< I S _ L A N G _ C O D E >------------------------------------------------------

module entry point

return true if code is a mediawiki recognized code; empty string else

]]

local function is_lang_code (frame)
	local code = mw.language.fetchLanguageName (frame.args[1]:lower(), mw.getContentLanguage():getCode());
	return '' ~= code and true or '';
end


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

return {
	code_to_name = code_to_name,
	is_lang_code = is_lang_code,
	name_to_code = name_to_code,
	}