Модуль:Pronouns

Материал из Calamity Mod Wiki
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль:Pronouns/doc

local p = {}
local cache = {}

local pronouns = {
	["им"] = "",
    ["род"] = "",
    ["дат"] = "",
    ["вин"] = "",
    ["твор"] = "",
    ["пред"] = "",
    ["мжим"] = "",
	["мжрод"] = "",
	["мждат"] = "",
	["мжвин"] = "",
	["мжтвор"] = "",
	["мжпред"] = "",
	["мприл"] = "",
	["жприл"] = "",
	["срприл"] = "",
	["мжприл"] = ""
}

function p.pronouns(frame)
    local word = frame.args[1]
    local case = frame.args[2]
    local pronounsed_word
    
    -- проверяем, есть ли результат в кэше
    if cache[word] and cache[word][case] then
        pronounsed_word = cache[word][case]
    else
        local pronouns_table = require("Модуль:Pronouns/item")
        local word_pronouns = pronouns_table[word]
        if word_pronouns ~= nil then
            pronounsed_word = word_pronouns[case] or word
        else
            if pronouns[case] == nil then
                error("Неверный падеж: " .. case)
            end
            pronounsed_word = word .. (pronouns[case] or "")
        end
        
        -- сохраняем результат в кэше
        if not cache[word] then
            cache[word] = {}
        end
        cache[word][case] = pronounsed_word
    end
    
    return pronounsed_word
end

return p