Minecraft Wiki
Advertisement

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

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

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

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

    -- приставки для слотов
	["любой"] =           '1b',
	["соответствующий"] = '4a',
	["повреждённый"] =    '1a', -- вообще-то это причастие, но...
	
	-- материалы
	["деревянный"] =  '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
			local case_format = case_format:gsub("^$1", stem)
			declensed_gender_data[case] = case_format
		end
		
		declensed_data[gender] = declensed_gender_data
	end
	
	declensed[adjective] = declensed_data
end

return declensed
Advertisement