Module:ug-headword

local export = {} local m_com = require("Module:ug-common")

local pos_functions = {}

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

local PAGENAME = mw.title.getCurrentTitle.text

local suffix_categories = { ["adjectives"] = true, ["adverbs"] = true, ["nouns"] = true, ["verbs"] = true, }

local function track(page) require("Module:debug").track("ug-headword/" .. page) return true end

function export.make_plural_noun(singular, vv, change) local base, v, c = m_com.getLast(singular) if not v then return nil end if change == "yes" then if vv ~= nil and vv ~= "" then v = vv		else if c == "" and (v == "ا" or v == "ە") then v = "ى" end end end local term = base .. v .. c	local tongue = m_com.checkTongue(singular) if tongue == "front" then return term .. "لەر" elseif tongue == "back" then return term .. "لار" else -- Special:WhatLinksHere/Wiktionary:Tracking/ug-headword/central vowels track("central vowels") end return nil end

-- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local params = { ["head"] = {list = true}, ["suff"] = {type = "boolean"}, }	if mw.ustring.find(PAGENAME, " ") then -- Special:WhatLinksHere/Wiktionary:Tracking/ug-headword/space track("space") end if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do			params[key] = val end end local args = require("Module:parameters").process(frame:getParent.args, params) local data = {lang = lang, pos_category = poscat, categories = {}, heads = args["head"], genders = {}, inflections = {enable_auto_translit = true}, categories = {}} if args["suff"] then data.pos_category = "suffixes" if suffix_categories[poscat] then local singular_poscat = poscat:gsub("s$", "") table.insert(data.categories, lang:getCanonicalName .. " " .. singular_poscat .. "-forming suffixes") else error("No category exists for suffixes forming " .. poscat .. ".") end end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end return require("Module:headword").full_headword(data) end

-- Display additional inflection information for a noun pos_functions["nouns"] = { params = { [1] = {}, -- Vowel, if there is a change ["pl"] = {}, --plural override ["change"] = {}, -- yes or (else:no) },	func = function(args, data) local pl = args["pl"] or nil local change = args["change"] or "yes" if pl == "-" then table.insert(data.inflections, {label = "uncountable"}) table.insert(data.categories, "Uyghur uncountable nouns") else table.insert(data.categories, "Uyghur countable nouns") if not pl then local plural = export.make_plural_noun(PAGENAME, args[1], change) if plural then pl = plural else table.insert(data.categories, "Uyghur nouns with unpredictable plurals") end end if pl then local infl = {label = 'plural', {term=pl}} table.insert(data.inflections, infl) -- else --	table.insert(data.categories, "Uyghur nouns needing plural inflection") end end if pl and not mw.title.new(pl).exists then table.insert(data.categories, "Uyghur nouns with red links in their headword lines") end end }

pos_functions["proper nouns"] = { params = { [1] = {}, -- Vowel, if there is a change ["pl"] = {}, --plural override ["change"] = {}, -- yes or (else:no) },	func = function(args, data) local pl = args["pl"] or nil local change = args["change"] or "yes" if pl == "-" then table.insert(data.inflections, {label = "uncountable"}) table.insert(data.categories, "Uyghur uncountable proper nouns") else table.insert(data.categories, "Uyghur countable proper nouns") if not pl then local plural = export.make_plural_noun(PAGENAME, args[1], change) if plural then pl = plural else table.insert(data.categories, "Uyghur proper nouns with unpredictable plurals") end end if pl then local infl = {label = 'plural', {term=pl}} table.insert(data.inflections, infl) -- else --	table.insert(data.categories, "Uyghur nouns needing plural inflection") end end if pl and not mw.title.new(pl).exists then table.insert(data.categories, "Uyghur proper nouns with red links in their headword lines") end end }

function export.noun(frame) local params = { [1] = {}, -- Vowel, if there is a change ["pl"] = {}, --plural override ["head"] = {}, ["change"] = {}, -- yes or (else:no) }	local args = require("Module:parameters").process(frame:getParent.args, params)

local data = { lang = lang, pos_category = "nouns", categories = {}, heads = {args["head"]}, inflections = {enable_auto_translit = true} }	local pl = args["pl"] or nil local change = args["change"] or "yes" if pl == "-" then table.insert(data.inflections, {label = "uncountable"}) table.insert(data.categories, "Uyghur uncountable nouns") else if not pl then local plural = export.make_plural_noun(PAGENAME, args[1], change) if plural then pl = plural else table.insert(data.categories, "Uyghur nouns with unpredictable plurals") end end if pl then local infl = {label = 'impersonal nominative plural', {term=pl}} table.insert(data.inflections, infl) -- else --	table.insert(data.categories, "Uyghur nouns needing plural inflection") end end if pl and not mw.title.new(pl).exists then table.insert(data.categories, "Uyghur nouns with red links in their headword lines") end

return require("Module:headword").full_headword(data) end

return export