Module:eu-headword

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

This module implements the following templates (more to be implemented in the future):


local export = {}

local m_string_utilities = require("Module:string utilities")
local m_table = require("Module:table")

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

local rsplit = m_string_utilities.split
local rfind = m_string_utilities.find
local rsplit = m_string_utilities.split
local rsub = m_string_utilities.gsub
local unpack = unpack or table.unpack -- Lua 5.2 compatibility

--add links to hyphenated terms
local function process_links(word)
	if rfind(word, " ") then
		return "] ]"
	elseif rfind(word, "%-") then
		return "]-]"
	end
	return word	
end

--adjectives and adverbs
function export.show_adj_adv(frame)
	local pos = frame.args.pos
	if not m_table.listToSet {"adverbs", "adjectives"} then
		error("Invalid part of speech: <adverbs> and <adjectives> are the only valid values")
	end
	local args = frame:getParent().args
	local data = {lang = lang, pos_category = pos, categories = {}, sort_key = args.sort, heads = {args.head}, genders = {}, inflections = {}}
	local tracking_categories = {}
	local stem = mw.title.getCurrentTitle().text
	local comparative, superlative, excessive = {}, {}, {}
	if	stem:sub(-1) == "r" then
		 stem = stem .. 'r' --add an r if the adjective ends in r
	elseif stem:sub(-1) == "a" then
		 stem = stem:sub(1, -2)
	end
	if args == "-" then
		table.insert(data.categories, "Basque uncomparable " .. pos)
		data.inflections = {{label = "not comparable"}}
	elseif args == "?" then
		table.insert(data.categories, "Basque interrogative " .. pos)
		table.insert(data.categories, "Basque uncomparable " .. pos)
		data.inflections = {{label = "interrogative"}}
	elseif args == "#" and pos == "adjectives" then
		table.insert(data.categories, "Basque indeclinable " .. pos)
		table.insert(data.categories, "Basque uncomparable " .. pos)
		data.inflections = {{label = "indeclinable"}}
	else
		if stem == "ongi" then
			data.inflections = {{label = "comparative", "hobeto", "hobeki"}, {label = "superlative", "hobekien", "ongien"}, {label = "excessive", "ongiegi"}}
		elseif stem == "ondo" then
			data.inflections = {{label = "comparative", "hobeto", "hobeki"}, {label = "superlative", "ondoen"}, {label = "excessive", "ondoegi"}}
		elseif stem == "asko" then --either the adverb or the adjective
			data.inflections = {{label = "comparative", "gehiago"}, {label = "superlative", "gehien"}, {label = "excessive", "gehiegi"}}
		elseif stem == "on" then
			data.inflections = {{label = "comparative", "hobe"}, {label = "superlative", "onen", "hoberen"}, {label = "excessive", "onegi"}}
		else
			data.inflections = {{label = "comparative", accel = {form = "comparative"}, stem .. "ago"}, {label = "superlative", accel = {form = "superlative"}, stem .. "en"}, 
			{label = "excessive", accel = {form = "excd"}, stem .. "egi"}}
		end
	end
	return require("Module:headword").full_headword(data) ..
		require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end

--determiners
function export.show_det(frame)
	local args = frame:getParent().args
	local data = {lang = lang, pos_category = "determiners", categories = {}, sort_key = args.sort, heads = {args.head}, genders = {}, inflections = {}}
	local tracking_categories = {}
	local stem = mw.title.getCurrentTitle().text
	local comparative, superlative, excessive = {}, {}, {}
	if args == "b" then
		data.inflections = {{label = "preposed"}}
	elseif args == "a" then
		data.inflections = {{label = "postposed"}}
	elseif args == "ba" or args == "ab" then
		data.inflections = {{label = "preposed/postposed"}}
	end
	
	if args == "?" then
		table.insert(data.categories, "Basque interrogative determiners")
		if args == "b" then
			data.inflections = {{label = "preposed, interrogative"}}
		end
	elseif args == "dem" then
		table.insert(data.categories, "Basque demonstrative determiners")
		if args == "a" then
			data.inflections = {{label = "postposed, demonstrative"}}
		end
	elseif args == "ind" then
		table.insert(data.categories, "Basque indefinite determiners")
	end
	
	return require("Module:headword").full_headword(data) ..
		require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end

--nouns
function export.show_noun(frame)
	local args = frame:getParent().args
	local g, genders = args.g or args
	local data = {lang = lang, pos_category = frame.args.proper and "proper nouns" or "nouns", categories = {}, sort_key = args.sort, heads = {args.head}, genders, inflections = {}}
	local tracking_categories = {}

	if g == "an" then
		data.genders = { "an" }
	elseif g == "in" then
		data.genders = { "in" }
	elseif g == "both" then
		data.genders = { "in","an" }
	else
		data.genders = { "?" }
	end
	
	if args.head then
		data.heads = {args.head}
	else
		data.heads = {process_links(mw.title.getCurrentTitle().text)}
	end

	return require("Module:headword").full_headword(data) ..
		require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end

--numerals
function export.show_numeral(frame)
	local args = frame:getParent().args
	local head_processed = require("Module:headword").add_multiword_links(mw.title.getCurrentTitle().text)
	if string.find(head_processed, "geita") then
		head_processed = mw.ustring.gsub(head_processed, "geita", "gei]][[eta|ta")
	end
	
	local data = {lang = lang, pos_category = "numerals", categories = {}, sort_key = args.sort, heads = {head_processed}}
	local tracking_categories = {}

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

--verbs
function export.show_verb(frame)
	local args = frame:getParent().args
	local data = {lang = lang, pos_category = "verbs", categories = {}, sort_key = args.sort, heads = {args.head}, genders = {"m"}, inflections = {}, info_mid={}, nogendercat=1} --the gender parameter is a placeholder
	local tracking_categories = {}
	local stem = mw.title.getCurrentTitle().text
	local stem_s = stem
	local ending = ""
	local fut_part_en = ""
	if	stem:sub(-2,-1) == "tu" then
		 stem_s = stem:sub(1, -3)
		 ending = "tu"
	elseif stem:sub(-2,-1) == "du" then
		stem_s = stem:sub(1, -3)
		ending = "du"
	elseif stem:sub(-1) == "l" then
		ending = "l"
	elseif stem:sub(-1) == "n" then
		stem_s = stem:sub(1,-2)
		ending = "n"
	elseif stem:sub(-1) == "i" then
		stem_s = stem:sub(1,-2)
		ending = "i"
	end
	
	--some verbs ending in -i can have "irregular" short forms (they are predictable, but as there aren't many of them it's easier to enter them manually)
	if args.inf or args.short then
		stem_s = args.inf or args.short
	end
	
	--for verbs ending in -rri
	if stem_s:sub(-2,-1) == "rr" then
		stem_s = stem_s:sub(1,-2)
	end
	
	--generate the non-finite forms
	if ending == "du" or ending == "tu" then
		fut_part_ko = stem .. "ko"
		inf = stem_s
		if  ('szx'):match(stem_s:sub(-1)) then
			v_noun = stem_s .. "te"
		else
			v_noun = stem_s .. "tze"
		end
	elseif ending == "n" then
		fut_part_ko = stem .. "go"
		fut_part_en = stem .. "en"
		inf = stem
		v_noun = stem_s .. "te"
	elseif ending == "l" then
		fut_part_ko = stem .. "ko"
		fut_part_en = stem .. "en"
		inf = stem
		v_noun = stem_s .. "tze"
	elseif ending == "i" then
		fut_part_ko = stem .. "ko"
		inf = stem_s
		if stem_s:sub(-2,-1) == "tz" then
			v_noun = stem_s:sub(1,-3) .. "zte"
		elseif stem_s:sub(-2,-1) == "ts" then
			v_noun = stem_s:sub(1,-3) .. "ste"
		elseif stem_s:sub(-2,-1) == "tx" then
			v_noun = stem_s:sub(1,-3) .. "xte"
		elseif  ('szx'):match(stem_s:sub(-1)) then
			v_noun = stem_s .. "te"
		else
			v_noun = stem_s .. "tze"
		end
	else
		fut_part_ko = stem .. "ko"
		inf = stem
		v_noun = stem_s .. "tze"
	end

	--for verbs like "ezagutu", where the short form isn't "ezagu", but "ezagut"
	if args.si then
		inf = args.si
	end
	
	--irregular future participle (for noun+izan verbs where the future participle is noun-ko, not noun+izango) or for verbs ending in -n/-l in which only one ending is used
	if args.fi then
		fut_part_ko = args.fi
	end
	
	-- irregular verbal noun
	if args.vn then
		v_noun = args.vn
	end
	
	--compound verbs
	local light_verb
	local words = rsplit(stem, " ")
	if #words > 1 then
    	light_verb = words
    	table.insert(data.categories, "Basque compound verbs")
    	table.insert(data.categories, 'Basque compound verbs formed with "' .. light_verb .. '"')
	end
	
	--transitivity
	if args == "da" then
		table.insert(data.categories, "Basque da verbs")
		table.insert(data.info_mid, '<abbr title="intransitive without indirect object">da</abbr>')
	elseif args == "du" then
		table.insert(data.categories, "Basque du verbs")
		table.insert(data.info_mid, '<abbr title="transitive without indirect object">du</abbr>')
	elseif args == "dio" then
		table.insert(data.categories, "Basque dio verbs")
		table.insert(data.info_mid, '<abbr title="transitive with indirect object">dio</abbr>')
	elseif args == "zaio" then
		table.insert(data.categories, "Basque zaio verbs")
		table.insert(data.info_mid, '<abbr title="intransitive with indirect object">zaio</abbr>')
	elseif args == "da-du" then
		table.insert(data.categories, "Basque da verbs")	
		table.insert(data.categories, "Basque du verbs")	
		table.insert(data.info_mid, '<abbr title="intransitive/transitive without indirect object">da/du</abbr>')
	elseif args == "du-dio" then
		table.insert(data.categories, "Basque du verbs")	
		table.insert(data.categories, "Basque dio verbs")	
		table.insert(data.info_mid, '<abbr title="transitive with or without indirect object">du/dio</abbr>')
	elseif args == "du-zaio" then
		table.insert(data.categories, "Basque du verbs")	
		table.insert(data.categories, "Basque zaio verbs")	
		table.insert(data.info_mid, '<abbr title="transitive with direct object/intransitive with indirect object">du/zaio</abbr>')
	elseif args == "da-dio" then
		table.insert(data.categories, "Basque da verbs")	
		table.insert(data.categories, "Basque dio verbs")	
		table.insert(data.info_mid, '<abbr title="intransitive or transitive with direct object">da/dio</abbr>')
	elseif args == "da-du-zaio" then
		table.insert(data.categories, "Basque da verbs")	
		table.insert(data.categories, "Basque du verbs")	
		table.insert(data.categories, "Basque zaio verbs")	
		table.insert(data.info_mid, '<abbr title="intransitive/transitive without indirect object, intransitive with indirect object">da/du/zaio</abbr>')
	elseif args == "da-zaio" then
		table.insert(data.categories, "Basque da verbs")	
		table.insert(data.categories, "Basque zaio verbs")	
		table.insert(data.info_mid, '<abbr title="intransitive with or without indirect object">da/zaio</abbr>')
	elseif args == "da-du-dio-zaio" then
		table.insert(data.categories, "Basque da verbs")	
		table.insert(data.categories, "Basque du verbs")	
		table.insert(data.categories, "Basque dio verbs")	
		table.insert(data.categories, "Basque zaio verbs")	
		table.insert(data.info_mid, '<abbr title="intransitive/transitive without or with indirect object">da/du/dio/zaio</abbr>')
	else
		table.insert(data.categories, "Basque verbs without transitivity")
		table.insert(data.info_mid, '<abbr title="transitivity incomplete">?</abbr>')
	end

	if (ending == "l" or ending == "n") and (not args.fi) then
		data.inflections = {{label = "imperfect participle", v_noun .. "n"}, {label = "future participle", fut_part_ko, fut_part_en}, {label = "short form", inf}, {label = "verbal noun", v_noun}}
	else
		data.inflections = {{label = "imperfect participle", v_noun .. "n"}, {label = "future participle", fut_part_ko}, {label = "short form", inf}, {label = "verbal noun", v_noun}}
	end
	
	return
		require("Module:headword").full_headword(data)
			:gsub('<span class="gender">.-</span>', '<i>'..table.concat(data.info_mid, '&nbsp;')..'</i>') ..
		require("Module:utilities").format_categories(tracking_categories, lang, args.sort)

end

--verb forms
function export.show_verb_form(frame)
	local args = frame:getParent().args
	local data = {lang = lang, pos_category = "verb forms", categories = {}, sort_key = args.sort, heads = {}, genders = {}, inflections = {}}
	local tracking_categories = {}
	------
	local pagename = args.pagename or mw.title.getCurrentTitle().text
	data.heads = {pagename}
	local m_all, f_all = require("Module:eu-allocutives").generate_allocutive(pagename, nil or args)
	if m_all then
		data.inflections = 
			{{label = "masculine allocutive", accel = {form = "mall", origin = pagename}, unpack(m_all)}, {label = "feminine allocutive", accel = {form = "fall", origin = pagename}, unpack(f_all)}}
	end

	return require("Module:headword").full_headword(data) .. require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end

return export