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