Dokumentation för denna modul finns på /dok (redigera), /test


Obs. Denna modul har inte uppdaterats till nya standarder. Konsensus för införande saknas, diskussion dog år 2017. Kräver språkkod för "delar" (används ej), men språknamn för "prefix" och "suffix" (används ca 20 gånger). Inte ansluten till Modul:lang. Bör undvikas innan detta är löst.

local tabell = mw.loadData("Modul:affix/data")

local export = {}

function export.capitalize(str)
	return mw.ustring.gsub(str, "^%l", mw.ustring.upper)
end

function export.delar(frame)
	local uppslag = mw.getCurrentFrame():getParent().args["uppslag"] or mw.title.getCurrentTitle().text
	local kod = mw.getCurrentFrame():getParent().args[1] or ""
	local del1 = mw.getCurrentFrame():getParent().args[2] or ""
	local del2 = mw.getCurrentFrame():getParent().args[3] or ""
	local del3 = mw.getCurrentFrame():getParent().args[4] or ""
	
	local lang = export.capitalize(tabell[kod] or "Okänt språk")
	local len1 = mw.ustring.len(mw.ustring.gsub(del1, "-", ""))
	local len2 = mw.ustring.len(mw.ustring.gsub(del2, "-", ""))
	local len3 = mw.ustring.len(mw.ustring.gsub(del3, "-", ""))
	
	local kat = ""
	local klammer1 = "[[" .. del1 .. "#" .. lang .. "|" .. mw.ustring.sub(uppslag, 1, -len3-len2-1) .. "]]"
	local klammer2 = "[[" .. del2 .. "#" .. lang .. "|" .. mw.ustring.sub(uppslag, -len3-len2, -len3-1) .. "]]"
	local klammer3 = "[[" .. del3 .. "#" .. lang .. "|" .. mw.ustring.sub(uppslag, -len3) .. "]]"
	
	if mw.ustring.len(del1) > len1 then
		kat = kat .. "[[Kategori:" .. lang .. "/Ord med prefixet " .. del1 .. "]]\n"
	else
		kat = kat .. "[[Kategori:" .. lang .. "/Ord med förledet " .. del1 .. "]]\n"
	end
	if del3 == "" then
		klammer3 = ""
		if mw.ustring.len(del2) > len2 then
			kat = kat .. "[[Kategori:" .. lang .. "/Ord med suffixet " .. del2 .. "]]\n"
		else
			kat = kat .. "[[Kategori:" .. lang .. "/Ord med efterledet " .. del2 .. "]]\n"
		end
	else
		if mw.ustring.len(del2) > len2 then
			kat = kat .. "[[Kategori:" .. lang .. "/Ord med interfixet " .. del2 .. "]]\n"
		else
			kat = kat .. "[[Kategori:" .. lang .. "/Ord med mellanledet " .. del2 .. "]]\n"
		end
		if mw.ustring.len(del3) > len3 then
			kat = kat .. "[[Kategori:" .. lang .. "/Ord med suffixet " .. del3 .. "]]\n"
		else
			kat = kat .. "[[Kategori:" .. lang .. "/Ord med efterledet " .. del3 .. "]]\n"
		end
	end
	
	kat = mw.getCurrentFrame():getParent().args["uppslag"] and "" or kat
	
	return kat .. klammer1 .. klammer2 .. klammer3 .. "\n"
end

function export.prefix(frame)
	local uppslag = mw.getCurrentFrame():getParent().args["uppslag"] or mw.title.getCurrentTitle().text
	local sprak = export.capitalize(mw.getCurrentFrame():getParent().args["språk"] or "Svenska")
	local affix = mw.getCurrentFrame():getParent().args[1] or ""
	local harledning = mw.getCurrentFrame():getParent().args[2]
	return 	"'''[[" .. affix .. "-#" .. sprak .. "|" .. affix .. "]][[" .. (harledning or mw.ustring.sub(uppslag, #affix+1)) .. "#" .. sprak .. "|" .. mw.ustring.sub(uppslag, #affix+1) .. "]]'''[[Kategori:" .. sprak .. "/Ord som börjar på " .. affix .. "-]]"
end

function export.suffix(frame)
	local uppslag = mw.getCurrentFrame():getParent().args["uppslag"] or mw.title.getCurrentTitle().text
	local sprak = export.capitalize(mw.getCurrentFrame():getParent().args["språk"] or "Svenska")
	local affix = mw.getCurrentFrame():getParent().args[1] or ""
	local harledning = mw.getCurrentFrame():getParent().args[2]
	return "'''[[" .. (harledning or mw.ustring.sub(uppslag, 1, -#affix-1)) .. "#" .. sprak .. "|" .. mw.ustring.sub(uppslag, 1, -#affix-1) .. "]][[-" .. affix .. "#" .. sprak .. "|" .. affix .. "]]'''[[Kategori:" .. sprak .. "/Ord som slutar på -" .. affix .. "]]"
end

return export