Module:sandbox/klj-headword

Hello, you have come here looking for the meaning of the word Module:sandbox/klj-headword. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:sandbox/klj-headword, but we will also tell you about its etymology, its characteristics and you will know how to say Module:sandbox/klj-headword in singular and plural. Everything you need to know about the word Module:sandbox/klj-headword you have here. The definition of the word Module:sandbox/klj-headword will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:sandbox/klj-headword, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.


local export = {}

local pos_functions = {}
local rfind = mw.ustring.find
local rmatch = mw.ustring.match
local rsplit = mw.text.split

local lang = require("Module:languages").getByCode("klj")
local m_scripts = require("Module:scripts")
local m_common = require("Module:klj-common")

local function is_not_empty(term)
	return term ~= nil and term ~= ''
  end

local suffix_categories  = { = true,  = true}

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

local function add_space_word_links(space_word, split_dash)
	local space_word_no_punct, punct = rmatch(space_word, "^(.*)()$")
	space_word_no_punct = space_word_no_punct or space_word
	punct = punct or ""
	local words
	-- don’t split prefixes and suffixes
	if not split_dash or rfind(space_word_no_punct, "^%-") or
		rfind(space_word_no_punct, "%-$") then
		words = {space_word_no_punct}
	else
		words = rsplit(space_word_no_punct, "%-")
	end
	local linked_words = {}
	for _, word in ipairs(words) do
		word = "]"
		table.insert(linked_words, word)
	end
	return table.concat(linked_words, "-") .. punct
end

local function add_lemma_links(lemma, split_dash)
	if not rfind(lemma, " ") then split_dash = true end
	local words = rsplit(lemma, " ")
	local linked_words = {}
	for _, word in ipairs(words) do
		table.insert(linked_words, add_space_word_links(word, split_dash))
	end
	local retval = table.concat(linked_words, " ")
	-- If we ended up with a single link consisting of the entire lemma,
	-- remove the link.
	local unlinked_retval = rmatch(retval, "^%]*)%]%]$")
	return unlinked_retval or retval
end

-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
	local PAGENAME = mw.title.getCurrentTitle().text

	local poscat = frame.args or error(
					   "Part of speech has not been specified. Please pass parameter 1 to the module invocation.")

	local params = {
		 = {list = true},
		 = {type = "boolean"},
		 = {alias_of = "splithyph", type = "boolean"},
		 = {type = "boolean"},
		 = {type = "boolean"}
	}

	if rfind(PAGENAME, " ") then track("space") end

	if pos_functions then
		for key, val in pairs(pos_functions.params) do
			params = val
		end
	end

	local parargs = frame:getParent().args
	if parargs.splitdash then track("splitdash") end
	local args = require("Module:parameters").process(parargs, params)

	local heads = args
	if pos_functions and pos_functions.param1_is_head and
		args then table.insert(heads, 1, args) end
	if args.nolinkhead then
		if #heads == 0 then heads = {PAGENAME} end
	else
		local auto_linked_head = add_lemma_links(PAGENAME, args)
		if #heads == 0 then
			heads = {auto_linked_head}
		else
			for _, head in ipairs(heads) do
				if head == auto_linked_head then
					track("redundant-head")
				end
			end
		end
	end

	local data = {
		lang = lang,
		pos_category = poscat,
		categories = {},
		heads = heads,
		genders = {},
		inflections = {}
	}

	if args then
		data.pos_category = "suffixes"

		if suffix_categories 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 then pos_functions.func(args, data) end

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

local function do_adjective(pos)
	return {
		params = {
			 = {} -- hyphen (-) if incomparable, intensive form otherwise
		},
		func = function(args, data)
			local PAGENAME = mw.title.getCurrentTitle().text
			local script = lang:findBestScript(PAGENAME):getCode()
			local function comp()
				if rfind(args1, "") then
					return "]"
				else
					return "]"
				end
			end
        
			if args == "-" then
				table.insert(data.inflections, {label = "not comparable"})
			else
				table.insert(data.inflections,
							 {label = "comparative", PAGENAME .. comp()})
			end
		end
	}
end
					
local function get_noun_pos(is_proper)
	return {
		params = { = {},  = {},  = {},  = {},  = {},  = {}},
		func = function(args, data)
			local PAGENAME = mw.title.getCurrentTitle().text
			local script = lang:findBestScript(PAGENAME):getCode()

			local args1 = is_not_empty(args) and args or ""
			local args2 = is_not_empty(args) and args or ""
        	local stem = args
			local stem = args
			local nb = args
			local sing = args

			if args1 == "" and args2 == "" then
				args1, args2 = m_common.getType(PAGENAME)
			elseif args1 == "" then
				track("args2 was overridden")
				args1, _ = m_common.getType(PAGENAME)
			elseif args2 == "" then
				track("args1 was overridden")
				_, args2 = m_common.getType(PAGENAME)
			else
				track("args1 and args2 were overridden")
			end

			local function stemforpl()
				if args2 == "cc" then
					return mw.ustring.sub(PAGENAME, 1, -2)
				else
					return PAGENAME
				end
			end
			local function kljv2()
				if rfind(args1, "") then
					return "ə"
				else
					return "a"
				end
			end
			local function kljv3()
				if rfind(args1, "") then
					return "ü"
				else
					return "ı"
				end
			end
			local function n() return "ñ" end
			local function l() return "l" end
			local function r() return "r" end

			if script == "Latn" then
				if args2 == "c" or args2 == "cc" or args2 == "q" or args2 == "k" then
					if stem then
						if sing == "no" then
							if nb == "no" then
								table.insert("?")
							else
								table.insert(data.genders, {"p"})
							end
						else
							if nb == "no" then
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									stem .. kljv3()
								})
							else
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									stem .. kljv3()
								})
								table.insert(data.inflections, {
									label = "plural",
									accel = {form = "nom|p"},
									PAGENAME .. l() .. kljv2() .. r()
								})
							end
						end
					else
						if sing == "no" then
							if nb == "no" then
								table.insert("?")
							else
								table.insert(data.genders, {"p"})
							end
						else
							if nb == "no" then
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									stemforacc() .. kljv3()
								})
							else
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									stemforacc() .. kljv3()
								})
								table.insert(data.inflections, {
									label = "plural",
									accel = {form = "nom|p"},
									stemforpl() .. l() .. kljv2() .. r()
								})
							end
						end
					end
				else
					if stem then
						if sing == "no" then
							if nb == "no" then
								table.insert("?")
							else
								table.insert(data.genders, {"p"})
							end
						else
							if nb == "no" then
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									stem .. kljv3()
								})
							else
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									stem .. kljv3()
								})
								table.insert(data.inflections, {
									label = "plural",
									accel = {form = "nom|p"},
									PAGENAME .. l() .. kljv2() .. r()
								})
							end
						end
					else
						if sing == "no" then
							if nb == "no" then
								table.insert("?")
							else
								table.insert(data.genders, {"p"})
							end
						else
							if nb == "no" then
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									PAGENAME .. n()
								})
							else
								table.insert(data.inflections, {
									label = "definite accusative",
									accel = {form = "def|acc|s"},
									PAGENAME .. n()
								})
								table.insert(data.inflections, {
									label = "plural",
									accel = {form = "nom|p"},
									PAGENAME .. l() .. kljv2() .. r()
								})
							end
						end
					end
				end
			end
		end
	}
end

pos_functions = get_noun_pos(false)

pos_functions = get_noun_pos(true)

return export