Moduł wykorzystywany przez szablon {{etymologia}}.


local m = {}
local dstrip = require("Module:linki").dstrip
local langs = require("Module:etymologia/kody").langs

local function gen_cat(iso1, iso2, typ)
	cattext = "[[Kategoria:%s (%s %s)]]"
	lang1 = langs[iso1][1]
	if langs[iso2][4] then
		lang2 = langs[iso2][4]
	elseif mw.ustring.sub(langs[iso2][1], -2) == "ki" then
		lang2 = langs[iso2][1] .. "ego"
	else
		lang2 = langs[iso2][1]
	end
	
	return mw.ustring.format(cattext, lang1, typ, lang2)
end

local function gen_link(pargs)
	return mw.ustring.format("[[%s#%s|%s]]", dstrip(pargs[3], pargs[2]), pargs[2], (pargs["alt"] or pargs[3]))
end

local function gen_abbr(args, pargs)
	switch = (args["typ"] == "link+" and 1) or 2
	langabbr = langs[pargs[switch]][2]
	langname = langs[pargs[switch]][1]
	if not langabbr then
		langabbr = langname
	elseif mw.ustring.sub(langabbr, -1) == ")" then
	elseif mw.ustring.sub(langabbr, -1) == "-" then
		langabbr = mw.ustring.sub(langabbr, 1, -2)
	else
		langabbr = langabbr .. "."
	end
	
	return mw.ustring.format('<abbr title="%s">%s</abbr> ', langname, langabbr)
end

local function gen_typ(ptyp)
	if ptyp == "zapożyczenie" or ptyp == "zapożyczone" or ptyp == "zap" or ptyp == "pożyczka" or ptyp == "poż" then
		return "zapożyczenia z"
	elseif ptyp == "odziedziczenie" or ptyp == "dziedziczenie" or ptyp == "odz" then
		return "terminy odziedziczone z"
	elseif ptyp == "zapożyczenie ponowne" or ptyp == "zapożyczone ponownie" or ptyp == "pożyczka pownowna" or ptyp == "zappon" or ptyp == "pożpon"
			or ptyp == "zapożyczenie powtórne" or ptyp == "pożyczka powtórna" or ptyp == "zappowt" or ptyp == "pożpowt" then
		return "zapożyczenia powtórne z"
	else
		return "terminy pochodzące z"
	end
end

function m.main(frame)
	args = frame.args
	pargs = frame:getParent().args
	link = gen_link(pargs)
	typ = args["typ"]
	ptyp = pargs["typ"]
	
	if typ == "link" then
		return link
	elseif typ == "etym" then
		return gen_abbr(typ, pargs) .. link .. gen_cat(pargs[1], pargs[2], gen_typ(ptyp))
	end
end

return m