Մոդուլ:lang

Վիքիբառարան-ից

Documentation for this module may be created at Մոդուլ:lang/doc

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.getCode(code_or_name)
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {code = "xx"}
	return lang_obj.code
end

function export.getLanguage(code_or_name)
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {name = "okänt språk"}
	local name = lang_obj.name
	return name
end

function export.getLanguageUCFirst(code_or_name)
	return ucFirst(export.getLanguage(code_or_name))
end

function export.getSortRules(code_or_name)
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {sort_rules = {}}
	local sort_rules = lang_obj.sort_rules or {}
	return sort_rules
end

--temp function for {{kategorilistenavigering}} until it has its own module
function export.getSortRulesAsString(frame)
	local code_or_name = frame.args[1]
	local sort_rules = {}
	for k,v in ipairs(export.getSortRules(code_or_name)) do
		sort_rules[#sort_rules + 1] = v
	end
	return table.concat(sort_rules, ",")
end

function export.getScriptCode(code_or_name)
	local lowercase_code_or_name = mw.ustring.lower(code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {script = ""}
	local script = lang_obj.script or ""
	return script
end

function export.hasLanguage(code_or_name)
	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.getEntryName(lang_code_or_name, text)
	local lowercase_code_or_name = mw.ustring.lower(lang_code_or_name)
	local lang_obj = lang_objects[lowercase_code_or_name] or {code = "xx"}
	local entry_name_rules = lang_obj.entry_name or {from = {}, to = {}}
	
	for i, from in ipairs(entry_name_rules.from) do
		local to = entry_name_rules.to[i] or ""
		text = mw.ustring.gsub(text, from, to)
	end

	return text	
end

return export