Bước tới nội dung

Mô đun:gmq-osw-cell

Từ điển mở Wiktionary
local m_links = require("Module:links")
local lang = require("Module:languages").getByCode("gmq-osw")
local export = {}

local accel_forms = {
	--NOUNS
	nsi = "nom|s",
	nsd = "def|nom|s",
	npi = "nom|p",
	npd = "def|nom|p",
	asi = "acc|s",
	asd = "def|acc|s",
	api = "acc|p",
	apd = "def|acc|p",
	dsi = "dat|s",
	dsd = "def|dat|s",
	dpi = "dat|p",
	dpd = "def|dat|p",
	gsi = "gen|s",
	gsd = "def|gen|s",
	gpi = "gen|p",
	gpd = "def|gen|p",
	
	--ADJECTIVES
	
	nsm = "m|nom|s", --strong nom. sg.
	nsf = "f|nom|s",
	nsn = "n|nom|s",
	asm = "m|acc|s", --strong acc. sg.
	asf = "f|acc|s",
	asn = "n|acc|s",
	gsm = "m|gen|s", --strong gen. sg.
	gsf = "f|gen|s",
	gsn = "n|gen|s",
	dsm = "m|dat|s", --strong dat. sg.
	dsf = "f|dat|s",
	dsn = "n|dat|s",
	
	npm = "m|nom|p", --strong nom. pl.
	npf = "f|nom|p",
	npn = "n|nom|p",
	apm = "m|acc|p", --strong acc. pl.
	apf = "f|acc|p",
	apn = "n|acc|p",
	gp  = "m//f//n|gen|p", --strong gen. pl.
	dp  = "m//f//n|dat|p",
	
	--VERBS
	-- Active

	-- No active infinitve is included since it is the lemma form.
	pres_part = "act|pres|part",
	past_part = "act|past|part",
	
	pres_ind_1sg = "1|s|pres|act|ind",
	pres_ind_2sg = "2|s|pres|act|ind",
	pres_ind_3sg = "3|s|pres|act|ind",
	pres_ind_1pl = "1|p|pres|act|ind",
	pres_ind_2pl = "2|p|pres|act|ind",
	pres_ind_3pl = "3|p|pres|act|ind",
	past_ind_1sg = "1|s|past|act|ind",
	past_ind_2sg = "2|s|past|act|ind",
	past_ind_3sg = "3|s|past|act|ind",
	past_ind_1pl = "1|p|past|act|ind",
	past_ind_2pl = "2|p|past|act|ind",
	past_ind_3pl = "3|p|past|act|ind",
	
	pres_sub_1sg = "1|s|pres|act|sub",
	pres_sub_2sg = "2|s|pres|act|sub",
	pres_sub_3sg = "3|s|pres|act|sub",
	pres_sub_1pl = "1|p|pres|act|sub",
	pres_sub_2pl = "2|p|pres|act|sub",
	pres_sub_3pl = "3|p|pres|act|sub",
	past_sub_1sg = "1|s|past|act|sub",
	past_sub_2sg = "2|s|past|act|sub",
	past_sub_3sg = "3|s|past|act|sub",
	past_sub_1pl = "1|p|past|act|sub",
	past_sub_2pl = "2|p|past|act|sub",
	past_sub_3pl = "3|p|past|act|sub",
	
	impr_2sg = "2|s|pres|act|imp",
	impr_1pl = "1|p|pres|act|imp",
	impr_2pl = "2|p|pres|act|imp",
	
	-- Mediopassive
	
	mp_infinitive = "mp|inf",
	mp_pres_part = "mp|pres|part",
	mp_past_part = "mp|past|part",
	
	mp_pres_ind_1sg = "1|s|pres|mp|ind",
	mp_pres_ind_2sg = "2|s|pres|mp|ind",
	mp_pres_ind_3sg = "3|s|pres|mp|ind",
	mp_pres_ind_1pl = "1|p|pres|mp|ind",
	mp_pres_ind_2pl = "2|p|pres|mp|ind",
	mp_pres_ind_3pl = "3|p|pres|mp|ind",
	mp_past_ind_1sg = "1|s|past|mp|ind",
	mp_past_ind_2sg = "2|s|past|mp|ind",
	mp_past_ind_3sg = "3|s|past|mp|ind",
	mp_past_ind_1pl = "1|p|past|mp|ind",
	mp_past_ind_2pl = "2|p|past|mp|ind",
	mp_past_ind_3pl = "3|p|past|mp|ind",
	
	mp_pres_sub_1sg = "1|s|pres|mp|sub",
	mp_pres_sub_2sg = "2|s|pres|mp|sub",
	mp_pres_sub_3sg = "3|s|pres|mp|sub",
	mp_pres_sub_1pl = "1|p|pres|mp|sub",
	mp_pres_sub_2pl = "2|p|pres|mp|sub",
	mp_pres_sub_3pl = "3|p|pres|mp|sub",
	mp_past_sub_1sg = "1|s|past|mp|sub",
	mp_past_sub_2sg = "2|s|past|mp|sub",
	mp_past_sub_3sg = "3|s|past|mp|sub",
	mp_past_sub_1pl = "1|p|past|mp|sub",
	mp_past_sub_2pl = "2|p|past|mp|sub",
	mp_past_sub_3pl = "3|p|past|mp|sub",
	
	mp_impr_2sg = "2|s|pres|mp|imp",
	mp_impr_1pl = "1|p|pres|mp|imp",
	mp_impr_2pl = "2|p|pres|mp|imp"
}

local mode_prefix = { --this is prefixed to the index value in accel_forms
	mpass  = "mp_"
}

local mode_prepend = { --on the other hand, this is prefixed to the accelerated text itself
	wk      = "weak|",
	str     = "strong|",
	comp    = "comparative|",
	wk_sup  = "weak|superlative|",
	str_sup = "strong|superlative|"
}

function export.create(frame)
	local args = frame:getParent().args
	local links = {}
	if not args[1] or args[1] == "" then
		return "―"
	else
		local accel_form = args[2]
		local accel
		if accel_form then
			local mode = args[3]
			if mode and mode_prefix[mode] then
				accel_form = mode_prefix[mode] .. accel_form
			end
			if accel_forms[accel_form] then
				if mode and mode_prepend[mode] then
					accel_form = mode_prepend[mode] .. accel_forms[accel_form]
				else
					accel_form = accel_forms[accel_form]
				end
			end
			accel = {form = accel_form}
		end
		local words = mw.text.split(args[1], "%s*,%s*")
		if words then
			for i,j in ipairs(words) do
				table.insert(links, m_links.full_link({lang = lang, term = j, accel = accel}))
			end
		end
	end
	return table.concat(links, ", ")
end

return export