4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/haller.rb', line 4
def to_hal(hal)
isim = UnicodeUtils.downcase(self, :tr).split.last
iyelik = 'iyelik'
i_hali = 'i'
e_hali = 'e'
de_hali = 'de'
den_hali = 'den'
i_ekleri = 'ııiiuuüü'
son_harf = isim[-1,1]
istisna = (isim =~ /^[^i][ei][^ıüoö]*[au]l$|alp$|^alp$/).nil? ? 0 : 2
son_sesli = isim.scan(/[aıeiouöü]/).last
if hal == iyelik || hal == i_hali
ek = i_ekleri['aıeiouöü'.index(son_sesli) + istisna]
else
ek = (son_sesli =~ /[aıou]/).nil? ? 'e' : (istisna == 2) ? 'e' : 'a'
end
if son_harf == son_sesli
ek = (hal == iyelik) ? 'n' + ek : (hal == i_hali || hal == e_hali) ? 'y' + ek : ek
end
if hal == de_hali || hal == den_hali
ek = (son_harf =~ /[fstkçşhp]/ ? 't' : 'd') + ek
end
if hal == iyelik || hal == den_hali
ek << 'n'
end
"#{self}'#{ek}"
end
|