Dokumentation for dette modul kan oprettes på Modul:lang/dok

local export = {}
local lang_objects = mw.loadData("Modul:lang/data")

local function ucFirst(str)
	return mw.ustring.gsub(str, "^%l", mw.ustring.upper)
end

function export.getLanguage(frame)
	local new_args = export._getParameters(frame.args, { 'code_or_name' });
	local code_or_name = new_args['code_or_name'] or '';
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {name = "ukendt sprog"}
	local name = lang_obj.name
	return name
end

-- hvis feltet "upper" er defineret i lang/data, bruges det præferentielt.
function export.getLanguageUCFirst(frame)
	local new_args = export._getParameters(frame.args, { 'code_or_name' });
	local code_or_name = new_args['code_or_name'] or '';
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {name = "ukendt sprog"}
	local name = lang_obj.name
	return lang_obj.upper or mw.ustring.gsub(name, "^%l", mw.ustring.upper)
end

function export.hasLanguage(frame)
	local new_args = export._getParameters(frame.args, { 'code_or_name' });
	local code_or_name = new_args['code_or_name'] or '';
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {code = "xx"}
	local has_language = (lang_obj.code ~= "xx")
	return has_language
end

function export._getParameters(frame_args, arg_list)
	local new_args = {};
	local index = 1;
	local value;
	
	for _, arg in ipairs(arg_list) do
		value = frame_args[arg]
		if value == nil then
			value = frame_args[index];
			index = index + 1;
		end
		new_args[arg] = value;
	end
	
	return new_args;
end

return export