Module:te-headword

From Wiktionary, the free dictionary
Jump to navigation Jump to search
This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}
local pos_functions = {}
local match = mw.ustring.match
local gsub = mw.ustring.gsub

local lang = require("Module:languages").getByCode("te")
local PAGENAME = mw.title.getCurrentTitle().text
local script = require("Module:scripts").getByCode("Telu")

function export.show(frame)

	local args = frame:getParent().args
	local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
 
	local data = {lang = lang, sc = script, pos_category = poscat, categories = {}, heads = {args["head"]}, genders = {}, inflections = {}}

	if pos_functions[poscat] then
		pos_functions[poscat](args, data)
	end
 
	return require("Module:headword").full_headword(data)

end

-- TODO
local function pluralize(sn)

	local pn

	-- do not swap
	if match(sn, "ుడు$") then -- -uDu > -ulu
		pn = gsub(sn, "ుడు$", "ులు")
	elseif match(sn, "డ్డ[ిు]$") then -- -DDi,-DDu > -Dlu
		pn = gsub(sn, "డ్డ[ిు]$", "డ్లు")
	elseif match(sn, "డి$") then -- -Di > -LLu
		pn = gsub(sn, "డి$", "ళ్ళు")
	elseif match(sn, "[డరల]ు$") then -- -Du,-lu,-ru > -LLu
		pn = gsub(sn, "[డరల]ు$", "ళ్ళు")
	elseif match(sn, "ట్ట[ిు]$") then -- -TTi,-TTu > -Tlu
		pn = gsub(sn, "ట్ట[ిు]$", "ట్లు")
	elseif match(sn, "టు$") then -- -Tu > -Tlu
		pn = gsub(sn, "టు$", "ట్లు")
	elseif match(sn, "([అక-హౘ-ౚ])ం$") then -- -aM > -Alu
		pn = gsub(sn, "([అక-హౘ-ౚ])ం$", "%1ాలు")
	elseif match(sn, "ెం$") then -- -eM > -Elu
		pn = gsub(sn, "ెం$", "ేలు")
	elseif match(sn, "ి$") then -- -i > -ulu
		pn = gsub(sn, "ి$", "ులు")
	else
		pn = sn .. "లు"
	end

	return pn

end

pos_functions["nouns"] = function(args, data)

	local plurals = {label = "plural"}

	if not args[1] then
		table.insert(plurals, pluralize(PAGENAME))
		table.insert(data.inflections, plurals)
	elseif args[1] == "-" then
		table.insert(data.inflections, {label = "singular only"})
		table.insert(data.categories, "Telugu singularia tantum")
	elseif args[1] == "+" then
		table.insert(data.inflections, {label = "plural only"})
		table.insert(data.categories, "Telugu pluralia tantum")
	else
		for _,par in ipairs(args) do
			table.insert(plurals, par)
		end
		table.insert(data.inflections, plurals)
	end

	table.insert(data.genders, args["g"] or "?")

end

pos_functions["proper nouns"] = function(args, data)

	local plurals = {label = "plural"}

	if not args[1] then
		-- do nothing
	elseif args[1] == "+" then
		table.insert(data.inflections, {label = "plural only"})
		table.insert(data.categories, "Telugu pluralia tantum")
	else
		for _,par in ipairs(args) do
			table.insert(plurals, par)
		end
		table.insert(data.inflections, plurals)
	end

	table.insert(data.genders, args["g"] or "?")

end

return export