Module:nrf-headword

This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}
local pos_functions = {}

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

-- 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 head = args["head"]; if head == "" then head = nil end
	
	-- The part of speech. This is also the name of the category that
	-- entries go in. However, the two are separate (the "cat" parameter)
	-- because you sometimes want something to behave as an adjective without
	-- putting it in the adjectives category.
	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 = {"Norman " .. poscat}
	
	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

-- This only adds categories for now. The rest of {{nrf-noun}} should be added later.
pos_functions["nouns"] = function(args, genders, inflections, categories)
	local gender = args[1] or ""
	
	if gender == "" then
		table.insert(categories, "Requests for gender in Norman entries")
	end
	
	local type = args["type"] or args[2]
	local plural = args["pl"] or args["plural"] or PAGENAME .. (type == "-" and "" or "s")
	
	if type == "plural" then
		table.insert(categories, "Norman plurals")
		table.insert(categories, "Norman pluralia tantum")
	elseif plural == PAGENAME then
		table.insert(categories, "Norman plurals")
	end
end

return export