Modul:kategoriser

Dokumentasjon for modulen kan opprettast på Modul:kategoriser/dok

local utdata = {}

local saerskilde = {'nb', 'tl', 'vo'}
local saerskilde2 = {non = 'norrøne'}

local data = require('Modul:kategoriser/data')
local strengverkty = require('Modul:string utilities')

function utdata.parserkall(ramme)
	spraak = require('Modul:languages').getByCode(ramme.args[1])
	kategoriRaa = ramme.args[2]
	return utdata.hovud(spraak, kategoriRaa)
end

function utdata.hentStandardnamn(namn)
	return data.namn[namn]
end

function utdata.storFyrsteVisteBokstav(tekst)
	if mw.ustring.match(tekst, '^%[%[[%wæÆøØåÅ]-%]%]') then
		b = mw.ustring.match(tekst, '^%[%[([%wæÆøØåÅ]-)%]%]')
		if mw.ustring.lower(b) == b then
			tekst = mw.ustring.gsub(tekst, '%[%[' .. b .. '%]%]', '[[' .. b .. '|' .. mw.language.getContentLanguage():ucfirst(b) .. ']]', 1)
		end
	elseif mw.ustring.match(tekst, '^[%wæÆøØåÅ]') then
		b = mw.ustring.match(tekst, '^([%wæÆøØåÅ])')
		tekst = mw.ustring.gsub(tekst, b, mw.language.getContentLanguage():ucfirst(b), 1)
	elseif mw.ustring.match(tekst, '^[^]]+|.') then
		b = mw.ustring.match(tekst, '^[^]]+|(.)')
		tekst = mw.ustring.gsub(tekst, '|' .. b, '|' .. mw.language.getContentLanguage():ucfirst(b), 1)
	elseif mw.ustring.match(tekst, '^[[* ]-[%wæÆøØåÅ]') then
		b = mw.ustring.match(tekst, '^[[* ]-([%wæÆøØåÅ])')
		tekst = mw.ustring.gsub(tekst, b, mw.language.getContentLanguage():ucfirst(b), 1)
	end
	return tekst
end

function utdata.engelskTilNorsk(omgrep, uomsettIRetur)
	local medSmaabokstavar = mw.ustring.lower(omgrep)
	local omsetjing
	if medSmaabokstavar ~= omgrep then
		omsetjing = data.engelskTilNorsk[medSmaabokstavar]
		omsetjing = omsetjing and mw.ustring.upper(mw.ustring.sub(omsetjing, 1, 1)) .. mw.ustring.sub(omsetjing, 2)
	else
		omsetjing = data.engelskTilNorsk[omgrep]
	end
	if not omsetjing and uomsettIRetur then
		omsetjing = omgrep
	end
	return omsetjing
end
	
function utdata.hovud(spraak, kategoriRaa, del2, raaeKategoriar)
	del2 = (del2 ~= '') and del2
	if not raaeKategoriar then
		kategori = data.namn[kategoriRaa] or kategoriRaa
	else
		kategori = kategoriRaa
	end
	for i, v in ipairs(saerskilde) do
		if spraak:getCode() == v or mw.ustring.match(spraak:getCanonicalName(), '[aeiouyæøå]$') then
			punktum = mw.ustring.match(kategori, '%.$')
			return utdata.storFyrsteVisteBokstav(mw.ustring.gsub(kategori, '%.$', '')) .. ' i ' .. spraak:getCanonicalName() .. (del2 or (punktum and '.') or '')
		end
	end
	for k, v in pairs(saerskilde2) do
		if spraak:getCode() == k then
			return utdata.storFyrsteVisteBokstav(v) .. ' ' .. kategori .. (del2 or '')
		end
	end
	return strengverkty.ucfirst(spraak:getCanonicalName()) .. 'e ' .. kategori .. (del2 or '')
end

return utdata