Модуль:Склонение прилагательных

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Этот модуль хранит информацию о всех формах склонения прилагательных по родам, числам и падежам.

Используется преимущественно в модуле Инвентарный слот/Псевдонимы.

-- https://ru.wiktionary.org/wiki/Викисловарь:Использование_словаря_Зализняка
-- Так как этот модуль только для падежей и не предназначен для образования
-- кратких / сравнительных / превосходных форм, дополнительные склонения —
-- помимо цифра+буква — здесь не нужны.
local declensions = {
	['1a'] = {
		["м"] = { ["и"] = "ый", ["р"] = "ого", ["д"] = "ому", ["в"] = "ый", ["т"] = "ым", ["п"] = "ом" },
		["ж"] = { ["и"] = "ая", ["р"] = "ой", ["д"] = "ой", ["в"] = "ую", ["т"] = "ой", ["п"] = "ой" },
		["с"] = { ["и"] = "ое", ["р"] = "ого", ["д"] = "ому", ["в"] = "ое", ["т"] = "ым", ["п"] = "ом" },
		["н"] = { ["и"] = "ые", ["р"] = "ых", ["д"] = "ым", ["в"] = "ые", ["т"] = "ыми", ["п"] = "ых" },
	},
	['1b'] = {
		["м"] = { ["и"] = "ой", ["р"] = "ого", ["д"] = "ому", ["в"] = "ой", ["т"] = "ым", ["п"] = "ом" },
		["ж"] = { ["и"] = "ая", ["р"] = "ой", ["д"] = "ой", ["в"] = "ую", ["т"] = "ой", ["п"] = "ой" },
		["с"] = { ["и"] = "ое", ["р"] = "ого", ["д"] = "ому", ["в"] = "ое", ["т"] = "ым", ["п"] = "ом" },
		["н"] = { ["и"] = "ые", ["р"] = "ых", ["д"] = "ым", ["в"] = "ые", ["т"] = "ыми", ["п"] = "ых" },
	},
	['2a'] = {
		["м"] = { ["и"] = "ий", ["р"] = "его", ["д"] = "ему", ["в"] = "ий", ["т"] = "им", ["п"] = "ем" },
		["ж"] = { ["и"] = "яя", ["р"] = "ей", ["д"] = "ей", ["в"] = "юю", ["т"] = "ей", ["п"] = "ей" },
		["с"] = { ["и"] = "ее", ["р"] = "его", ["д"] = "ему", ["в"] = "ее", ["т"] = "им", ["п"] = "ем" },
		["н"] = { ["и"] = "ие", ["р"] = "их", ["д"] = "им", ["в"] = "ие", ["т"] = "ими", ["п"] = "их" },
	},
	['4a'] = {
		["м"] = { ["и"] = "ий", ["р"] = "его", ["д"] = "ему", ["в"] = "ий", ["т"] = "им", ["п"] = "ем" },
		["ж"] = { ["и"] = "ая", ["р"] = "ей", ["д"] = "ей", ["в"] = "ую", ["т"] = "ей", ["п"] = "ей" },
		["с"] = { ["и"] = "ее", ["р"] = "его", ["д"] = "ему", ["в"] = "ее", ["т"] = "им", ["п"] = "ем" },
		["н"] = { ["и"] = "ие", ["р"] = "их", ["д"] = "им", ["в"] = "ие", ["т"] = "ими", ["п"] = "их" },
	},
}

local adjectives = {
	-- Цвета
	["белый"] =        '1a',
	["оранжевый"] =    '1a',
	["сиреневый"] =    '1a',
	["светло-синий"] = '2a',
	["жёлтый"] =       '1a',
	["лаймовый"] =     '1a',
	["розовый"] =      '1a',
	["серый"] =        '1a',
	["светло-серый"] = '1a',
	["бирюзовый"] =    '1a',
	["фиолетовый"] =   '1a',
	["синий"] =        '2a',
	["коричневый"] =   '1a',
	["зелёный"] =      '1a',
	["красный"] =      '1a',
	["чёрный"] =       '1a',

    -- приставки для слотов
	["любой"] =           '1b',
	["соответствующий"] = '4a',
	["повреждённый"] =    '1a', -- вообще-то это причастие, но...
	["цветной"] =         '1b',
	
	-- материалы
	["деревянный"] =  '1a',
	["каменный"] =    '1a',
	["железный"] =    '1a',
	["золотой"] =     '1b',
	["алмазный"] =    '1a',
	["незеритовый"] = '1a',
}

local declensed = {}

for adjective, declension in pairs(adjectives) do
	local adj_decl = assert(declensions[declension], ("неизвестное склонение «%s» для прилагательного «%s»"):format(declension, adjective))
	local stem = mw.ustring.gsub(adjective, '..$', '')

	local declensed_data = {}
	for gender, gender_data in pairs(adj_decl) do
		local declensed_gender_data = {}
		for case, case_format in pairs(gender_data) do
			declensed_gender_data[case] = stem .. case_format
		end
		
		declensed_data[gender] = declensed_gender_data
	end
	
	declensed[adjective] = declensed_data
end

return declensed