-
Notifications
You must be signed in to change notification settings - Fork 0
/
isim.js
63 lines (57 loc) · 1.34 KB
/
isim.js
1
2
3
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
'use strict';
const Kelime = require('./lib/kelime');
/**
* İsimleri tanımlayan class
*/
class Isim extends Kelime {
/**
* Tanımlanacak ismin özelliklerinden yeni bir isim nesnesi oluştur
* @extends Kelime
* @param {string} isim
* @param {bool} ozelIsim
*/
constructor(isim, ozelIsim = false) {
super(isim);
this.ozelIsim = ozelIsim;
}
/**
* Çoğul eki ekle
* @return {string} İsmin çoğul hali
*/
cogul() {
return this.ekle('cogul', 'lar');
}
/**
* Hal eki ekle
* @param {string} hal İsme eklenecek hal eki
* @return {string} İsmin hal eki eklenmiş hali
*/
halEki(hal) {
const ayrac = this.ozelIsim ? '\'' : '';
const halEkleri = {
'belirtme': 'i',
'yönelme': 'e',
'bulunma': 'de',
'ayrılma': 'den',
};
return this.ekle('hal', halEkleri[hal], ayrac);
}
/**
* İyelik eki ekle
* @param {string} zamir İsmin sahibin kişi zamirinin iyelik eki almış hali
* @return {string} İsmin iyelik eki eklenmiş hali
*/
iyelikEki(zamir) {
const ayrac = this.ozelIsim ? '\'' : '';
const iyelikEkleri = {
'benim': 'm',
'senin': 'n',
'onun': 'ı',
'bizim': 'mız',
'sizin': 'nız',
'onların': 'ları',
};
return this.ekle('iyelik', iyelikEkleri[zamir], ayrac);
}
}
module.exports = Isim;