Module:ug-headword/sandbox

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

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

-- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) 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 params = { ["head"] = {list = true, default = ""}, ["suff"] = {type = "boolean"}, }	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"], inflections = {enable_auto_translit = true}} if args["suff"] then data.pos_category = "suffixes" if poscat == "adjectives" then table.insert(data.categories, lang:getCanonicalName .. " adjective-forming suffixes") elseif poscat == "adverbs" then table.insert(data.categories, lang:getCanonicalName .. " adverb-forming suffixes") elseif poscat == "nouns" then table.insert(data.categories, lang:getCanonicalName .. " noun-forming suffixes") elseif poscat == "verbs" then table.insert(data.categories, lang:getCanonicalName .. " verb-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

function export.make_plural_noun(singular, vv) local base, v, c = m_com.getLast(singular) if not v then return {} end --if change == "yes" then if c == "" and 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 .. "لار"} end return {} end

pos_functions["nouns"] = { params = { [1] = {list = true, allow_holes = true}, ["pl"] = {}, --plural override (Outdated) ["change"] = {}, -- yes or (else:no) (Outdated) },	func = function(args, data) -- Gather all the plural parameters from the numbered parameters. local plurals = {} for i = 1, args[1].maxindex do			local pl = args[1][i] if pl then table.insert(plurals, pl) end end -- Decide what to do next... local mode = nil if plurals[1] == "?" or plurals[1] == "!" or plurals[1] == "-" or plurals[1] == "~" then mode = plurals[1] table.remove(plurals, 1) -- Remove the mode parameter end -- Plural is unknown if mode == "?" then table.insert(data.categories, lang:getCanonicalName .. " nouns with unknown or uncertain plurals") return -- Plural is not attested elseif mode == "!" then table.insert(data.inflections, {label = "plural not attested"}) table.insert(data.categories, lang:getCanonicalName .. " nouns with unattested plurals") return -- Uncountable noun; may occasionally have a plural elseif mode == "-" then table.insert(data.categories, lang:getCanonicalName .. " uncountable nouns") -- If plural forms were given explicitly, then show "usually" --if #plurals > 0 then table.insert(data.inflections, {label = "usually uncountable"}) table.insert(data.categories, lang:getCanonicalName .. " countable nouns") --else --	table.insert(data.inflections, {label = "uncountable"}) --end -- Mixed countable/uncountable noun, always has a plural elseif mode == "~" then table.insert(data.inflections, {label = "countable and uncountable"}) table.insert(data.categories, lang:getCanonicalName .. " uncountable nouns") table.insert(data.categories, lang:getCanonicalName .. " countable nouns") -- The default, always has a plural else table.insert(data.categories, lang:getCanonicalName .. " countable nouns") end --change --local change = args["change"] or "yes" --if plurals[1] == "no" then --	change = plurals[1] --	table.remove(plurals, 1) -- Remove the change parameter --end --vowel local vv = nil if plurals[1] == "i" or plurals[1] == "ى" then vv = "ى" table.remove(plurals, 1) -- Remove the vowel parameter end local stem = PAGENAME -- If no plural was given, add a default one now if #plurals == 0 then local pl = args["pl"] or nil if pl then plurals = {pl} else plurals = export.make_plural_noun(stem, vv, change) end if #plurals == 0 then table.insert(data.categories, lang:getCanonicalName .. " nouns with unpredictable plurals") end end if #plurals == 0 then return end -- There are plural forms to show, so show them local pl_parts = {label = "impersonal nominative plural"} for i, pl in ipairs(plurals) do			if pl == "a" or pl == "ا" or pl == "lar" or pl == "لار" then pl = stem .. "لار" elseif pl == "e" or pl == "ە" or pl == "ler" or pl == "لەر" then pl = stem .. "لەر" end table.insert(pl_parts, pl) if pl and not mw.title.new(pl).exists then table.insert(data.categories, lang:getCanonicalName .. " nouns with missing plurals") end end table.insert(data.inflections, pl_parts) end }

return export