Этот модуль хранит информацию о всех формах склонения прилагательных по родам, числам и падежам.
Используется преимущественно в модуле Инвентарный слот/Псевдонимы.
-- 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