Module:sl-adjectives

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

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

local export = {}

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

-- Within this module, inflections are the functions that do the actual inflecting
-- by creating the forms of an adjective. They are defined further down.
local inflections = {}

-- 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
	FULLPAGENAME = mw.title.getCurrentTitle().prefixedText
	NAMESPACE = mw.title.getCurrentTitle().nsText
	local infl_type = frame.args or error("Inflection type has not been specified.")
	local args = frame:getParent().args
	
	local data = {forms = {}, info = nil, categories = {}}
	
	if inflections then
		inflections(args, data)
	else
		error("Unknown inflection type '" .. infl_type .. "'")
	end
	
	return make_table(data)
end

-- Hard stem adjective
inflections = function(args, data)
	local stem = args; if not stem or stem == "" then if NAMESPACE == "Template" then stem = "-" else error("1st parameter (stem) has not been specified.") end end
	local final = args; if final == "" then final = nil end
	local def = args
	
	-- Create the full stem, which is used when endings are added
	local full_stem = stem
	
	if final then
		full_stem = full_stem .. final
	else
		full_stem = make_long(full_stem)
	end
	
	-- If the given stem doesn't contain any accent marks, flag the entry for attention
	if not require("Module:sl-common").has_accents(full_stem) then
		table.insert(data.categories, "Requests for accents in Slovene adjective entries")
	end

	-- Is this a hard stem or a soft stem?
	local oe = "o"
	data.info = "hard"
	
	if require("Module:sl-common").is_soft(full_stem) then
		oe = "e"
		data.info = "soft"
	end
	
	-- Masculine singular
	if def == "1" then
		data.forms = {full_stem .. "i"}
	elseif def == "0" then
		data.forms = {stem .. (final and "e" .. final or "")}
	else
		data.forms = {stem .. (final and "e" .. final or "")}
		data.forms = {full_stem .. "i"}
	end
	-- acc_sg_m depends on animacy
	data.forms = {full_stem .. "ega"}
	data.forms = {full_stem .. "emu"}
	data.forms = {full_stem .. "em"}
	data.forms = {full_stem .. "im"}
	
	-- Feminine singular
	data.forms = {full_stem .. "a"}
	data.forms = {full_stem .. "o"}
	data.forms = {full_stem .. "e"}
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "o"}
	
	-- Neuter singular
	data.forms = {full_stem .. oe}
	data.forms = {full_stem .. oe}
	data.forms = {full_stem .. "ega"}
	data.forms = {full_stem .. "emu"}
	data.forms = {full_stem .. "em"}
	data.forms = {full_stem .. "im"}
	
	-- Masculine dual
	data.forms = {full_stem .. "a"}
	data.forms = {full_stem .. "a"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "ima"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "ima"}
	
	-- Feminine dual
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "ima"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "ima"}
	
	-- Neuter dual
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "ima"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "ima"}
	
	-- Masculine plural
	data.forms = {full_stem .. "i"}
	data.forms = {full_stem .. "e"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "im"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "imi"}
	
	-- Feminine plural
	data.forms = {full_stem .. "e"}
	data.forms = {full_stem .. "e"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "im"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "imi"}
	
	-- Neuter plural
	data.forms = {full_stem .. "a"}
	data.forms = {full_stem .. "a"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "im"}
	data.forms = {full_stem .. "ih"}
	data.forms = {full_stem .. "imi"}
end

function make_long(stem)
	local vowel_repl = {
		 = "á",
		 = "ê",
		 = "í",
		 = "ô",
		 = "ú"}
	
	function repl(vowel, rest)
		return (vowel_repl or vowel) .. rest
	end
	
	return mw.ustring.gsub(stem, "()(+)$", repl)
end

function make_table(data)
	local function repl(param)
		local accel = false  -- Temporary
		local no_store = false
		
		if param == "info" then
			return mw.getContentLanguage():ucfirst(data.info or "")
		elseif string.sub(param, 1, 1) == "!" then
			no_store = true
			param = string.sub(param, 2)
		elseif string.sub(param, 1, 1) == "#" then
			accel = false
			param = string.sub(param, 2)
		end
		
		local forms = data.forms
		
		if not forms then
			return "—"
		end
		
		local ret = {}
		
		for key, subform in ipairs(forms) do
			table.insert(ret, require("Module:links").full_link({lang = lang, term = subform, accel = accel and {form = param, no_store = no_store} or nil}))
		end
		
		return table.concat(ret, "<br/>")
	end
	
	local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'sl-non-tonal', args = { intro = 'section' } } .. '\n' .. [=[
{| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="border: 1px solid var(--wikt-palette-grey, #9e9e9e);"
|- style="background: var(--wikt-palette-lightblue, #d9ebff); text-align: left;"
! class="vsToggleElement" colspan="4" | {{{info}}}
|- class="vsShow"
! style="background: var(--wikt-palette-lightblue, #d9ebff); width: 9em;" | 
! style="background: var(--wikt-palette-lightblue, #d9ebff); width: 10em;" | masculine
! style="background: var(--wikt-palette-lightblue, #d9ebff); width: 10em;" | feminine
! style="background: var(--wikt-palette-lightblue, #d9ebff); width: 10em;" | neuter
|- class="vsShow"
! style="width: 11em; background: var(--wikt-palette-lighterblue, #ebf4ff);" | nom. sing.
| style="width: 11em;" | {{{!nom_sg_m}}}
| style="width: 11em;" | {{{!nom_sg_f}}}
| style="width: 11em;" | {{{!nom_sg_n}}}
|- class="vsHide"
! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);" | singular
|- class="vsHide"
! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);" | 
! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);" | masculine
! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);" | feminine
! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);" | neuter
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | nominative
| {{{nom_sg_m}}}]=] .. (data.forms and ' <sup style="cursor:help" title="indefinite">ind</sup><br/>{{{nom_sg_m_def}}} <sup style="cursor:help" title="definite">def</sup>' or "") .. [=[

| {{{nom_sg_f}}}
| {{{nom_sg_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | genitive
| {{{gen_sg_m}}}
| {{{gen_sg_f}}}
| {{{gen_sg_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | dative
| {{{dat_sg_m}}}
| {{{dat_sg_f}}}
| {{{dat_sg_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | accusative
| ''nominative''<sup style="cursor:help" title="inanimate">inan</sup>'' or<br/>genitive''<sup style="cursor:help" title="animate">anim</sup>
| {{{acc_sg_f}}}
| {{{acc_sg_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | locative
| {{{loc_sg_m}}}
| {{{loc_sg_f}}}
| {{{loc_sg_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | instrumental
| {{{ins_sg_m}}}
| {{{ins_sg_f}}}
| {{{ins_sg_n}}}
|- class="vsHide"
! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);" | dual
|- class="vsHide"
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | 
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | masculine
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | feminine
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | neuter
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | nominative
| {{{nom_du_m}}}
| {{{nom_du_f}}}
| {{{nom_du_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | genitive
| {{{gen_du_m}}}
| {{{gen_du_f}}}
| {{{gen_du_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | dative
| {{{dat_du_m}}}
| {{{dat_du_f}}}
| {{{dat_du_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | accusative
| {{{acc_du_m}}}
| {{{acc_du_f}}}
| {{{acc_du_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | locative
| {{{loc_du_m}}}
| {{{loc_du_f}}}
| {{{loc_du_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | instrumental
| {{{ins_du_m}}}
| {{{ins_du_f}}}
| {{{ins_du_n}}}
|- class="vsHide"
! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);" | plural
|- class="vsHide"
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | 
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | masculine
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | feminine
! style="background: var(--wikt-palette-lightblue, #d9ebff);" | neuter
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | nominative
| {{{nom_pl_m}}}
| {{{nom_pl_f}}}
| {{{nom_pl_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | genitive
| {{{gen_pl_m}}}
| {{{gen_pl_f}}}
| {{{gen_pl_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | dative
| {{{dat_pl_m}}}
| {{{dat_pl_f}}}
| {{{dat_pl_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | accusative
| {{{acc_pl_m}}}
| {{{acc_pl_f}}}
| {{{acc_pl_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | locative
| {{{loc_pl_m}}}
| {{{loc_pl_f}}}
| {{{loc_pl_n}}}
|- class="vsHide"
! style="background: var(--wikt-palette-lighterblue, #ebf4ff);" | instrumental
| {{{ins_pl_m}}}
| {{{ins_pl_f}}}
| {{{ins_pl_n}}}
|}]=]
	
	return mw.ustring.gsub(wikicode, "{{{(+)}}}", repl) .. require("Module:utilities").format_categories(data.categories, lang)
end

return export