-- Sözlərə yiyəlik hal şəkilçisinin əlavə edilməsi
local p = {}
local lastVowel = require('Module:Son sait')
-- Yiyəlik halın hazırlanması üçün funksiya
function p.make_possessive(frame)
-- Şablon parametrindən sözün götürülməsi
local word = frame.args[1]
-- Sözün daxil edilməsinin yoxlanışı
if not word then
return "Xəta: Söz daxil edilməyib."
end
-- Saitlər və şəkilçilər
local vowels = "aıoueəiöü"
local suffixes = {"ın", "in", "un", "ün", "-nın", "-nin", "-nun", "-nün", "-in"}
-- Sözün son saitinin götürülməsi üçün köməkçi funksiya
local last_vowel = lastVowel.main({args = {word}}, false)
-- Son hərfin "k" və "q" olmasının yoxlanışı
local last_letter = word:sub(-1)
if last_letter == "k" then
word = word:sub(1, -2) .. "y"
elseif last_letter == "q" then
word = word:sub(1, -2) .. "ğ"
end
-- Uyğun şəkilçinin müəyyənləşdirilməsi
local suffix_index
if last_vowel == "a" or last_vowel == "ı" then
suffix_index = 1
elseif last_vowel == "o" or last_vowel == "u" then
suffix_index = 3
elseif last_vowel == "e" or last_vowel == "ə" or last_vowel == "i" then
suffix_index = 2
elseif last_vowel == "ö" or last_vowel == "ü" then
suffix_index = 4
elseif last_letter == "A" or last_letter == "K" then
suffix_index = 5
elseif last_letter == "B" or last_letter == "C" or last_letter == "Ç"
or last_letter == "D" or last_letter == "E" or last_letter == "Ə"
or last_letter == "F" or last_letter == "G" or last_letter == "H"
or last_letter == "X" or last_letter == "İ" or last_letter == "J"
or last_letter == "P" or last_letter == "Q" or last_letter == "S"
or last_letter == "Ş" or last_letter == "T" or last_letter == "V"
or last_letter == "Y" or last_letter == "Z" then
suffix_index = 6
elseif last_letter == "L" or last_letter == "M" or last_letter == "N" or last_letter == "R" then
suffix_index = 9
elseif last_letter == "O" or last_letter == "U" then
suffix_index = 7
elseif last_letter == "Ö" or last_letter == "Ü" then
suffix_index = 8
else
suffix_index = 1
end
-- Şəkilçinin bitişdirici samitlə əlavə edilməsi
if string.find(vowels, last_letter, 1, true) then
if word == "su" or word == "Su" then
word = word .. "y"
else
word = word .. "n"
end
end
local possessive_word = word .. suffixes[suffix_index]
return possessive_word
end
return p