Modul:translit-redirect/templates

A modult a Modul:translit-redirect/templates/doc lapon tudod dokumentálni

local export = {}

local getByCode = require("Module:languages").getByCode

local combining = {}
for i = 0x300, 0x36f do
	combining[mw.ustring.char(i)] = ''
end

local function ucfirst(str)
	return mw.getContentLanguage():ucfirst(str)
end

local function normalize(str)
	return mw.ustring.gsub(mw.ustring.toNFD(str:match("|([^%]]+)")), '.', combining)
end

local langs = {}
setmetatable(langs, { -- Auto-create language objects: langs.en -> language object for English.
	__index = function(self, key)
		local lang = getByCode(key) or error("No language with code " .. key .. ".")
		self[key] = lang
		return lang
	end
})

function export.documentation(frame)
	local data = mw.loadData "Module:translit-redirect/data"
	local documentation_page = mw.title.getCurrentTitle().subpageText == "doc"
	
	local output = {}
	for lang_code in pairs(data) do
		local lang = langs[lang_code]
		local canonical_name = lang:getCanonicalName()
		table.insert(output, 
			documentation_page and ("[[:Category:%s|%s]] (<code>%s</code>)")
					:format(lang:getCategoryName(), canonical_name, lang:getCode())
			or ("[[:Category:%s|%s]] (<code>%s</code>) [[Kategória:%s sablonok|transliteration]]")
				:format(lang:getCategoryName(), canonical_name, lang:getCode(), ucfirst(canonical_name)))
	end
	
	-- Sort by canonical name.
	table.sort(
		output,
		function (label1, label2)
			return normalize(label1) < normalize(label2)
		end)
	
	return string.format("A modul által kezelt átírású nyelvek: %s.", mw.text.listToText(output))
end

return export