Module:dsb-headword

Definition from Wiktionary, the free dictionary
Jump to: navigation, search
Text-x-generic with pencil.svg This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}

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

local pos_functions = {}

-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
	local args = frame:getParent().args
	PAGENAME = mw.title.getCurrentTitle().text
	
	local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
	
	local genders = {}
	local inflections = {}
	local categories = {"Lower Sorbian " .. poscat}
	
	local head = args["head"]; if head == "" then head = nil end
	
	-- See if a function exists for the particular part-of-speech type, and call it if there is one.
	if pos_functions[poscat] then
		pos_functions[poscat](args, genders, inflections, categories)
	end
	
	return require("Module:headword").full_headword(lang, nil, head, nil, genders, inflections, categories, nil)
end

pos_functions["nouns"] = function(args, genders, inflections, categories)
	-- Gender
	local g = args[1]; if g == "" then g = nil end
	table.insert(genders, g)
	
	if g == "m" then
		table.insert(categories, "Lower Sorbian masculine nouns")
	elseif g == "f" then
		table.insert(categories, "Lower Sorbian feminine nouns")
	elseif g == "n" then
		table.insert(categories, "Lower Sorbian neuter nouns")
	elseif g == "p" then
		table.insert(categories, "Lower Sorbian pluralia tantum")
	end
	
	-- Genitive
	local gen = args["gen"]; if gen == "" then gen = nil end
	
	if gen then
		table.insert(inflections, {label = "genitive", gen})
	end
	
	if g == "p" then
		table.insert(inflections, {label = "plurale tantum"})
	else
		-- Dual
		local dual = args["dual"]; if dual == "" then dual = nil end
		
		if dual then
			table.insert(inflections, {label = "dual", dual})
		end
		
		-- Plural
		local pl = args["pl"]; if pl == "" then pl = nil end
		
		if pl then
			table.insert(inflections, {label = "plural", pl})
		end
	end
	
	-- Diminutive
	local dim = args["dim"]; if dim == "" then dim = nil end
	
	if dim then
		table.insert(inflections, {label = "diminutive", dim})
	end
	
	-- Feminine
	local f = args["f"]; if f == "" then f = nil end
	
	if f then
		table.insert(inflections, {label = "feminine equivalent", f})
	end
	
	-- Masculine
	local m = args["m"]; if m == "" then m = nil end
	
	if m then
		table.insert(inflections, {label = "masculine equivalent", m})
	end
end

return export