@erkanarslan/turkish-inflection
Version:
A library to inflect Turkish words
219 lines (218 loc) • 7.67 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var index_1 = require("./index");
test('i-type vowel harmony', function () {
var list = [
["domates", "domatesi"],
["incir", "inciri"],
["ananas", "ananası"],
["tarçın", "tarçını"],
["maydanoz", "maydanozu"],
["armut", "armutu"],
["söz", "sözü"],
["üzüm", "üzümü"]
];
for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {
var _a = list_1[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source, "i");
expect(result).toBe(target);
}
});
test('i-type vowel harmony for numbers', function () {
var list = [
["21", "21'i"],
["13", "13'ü"],
["2014", "2014'ü"],
["5", "5'i"],
["99", "99'u"],
["10", "10'u"],
["30", "30'u"],
["40", "40'ı"],
["60", "60'ı"],
["70", "70'i"],
["80", "80'i"],
["90", "90'ı"],
["100", "100'ü"],
["1000", "1000'i"]
];
for (var _i = 0, list_2 = list; _i < list_2.length; _i++) {
var _a = list_2[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source + "'", "i");
expect(result).toBe(target);
}
});
test('e-type vowel harmony', function () {
var list = [
["domates", "domatese"],
["incir", "incire"],
["ananas", "ananasa"],
["tarçın", "tarçına"],
["maydanoz", "maydanoza"],
["armut", "armuta"],
["söz", "söze"],
["üzüm", "üzüme"]
];
for (var _i = 0, list_3 = list; _i < list_3.length; _i++) {
var _a = list_3[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source, "e");
expect(result).toBe(target);
}
});
test('e-type vowel harmony for numbers', function () {
var list = [
["21", "21'e"],
["13", "13'e"],
["2014", "2014'e"],
["5", "5'e"],
["99", "99'a"],
["10", "10'a"],
["30", "30'a"],
["40", "40'a"],
["70", "70'e"],
["80", "80'e"],
["90", "90'a"],
["100", "100'e"],
["1000", "1000'e"]
];
for (var _i = 0, list_4 = list; _i < list_4.length; _i++) {
var _a = list_4[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source + "'", "e");
expect(result).toBe(target);
}
});
test('should inflect words in a text if suffix markup is used', function () {
var list = [
["Merhaba dünya!", "Merhaba dünya!"],
["Ay--e ve güneş--e merhaba!", "Aya ve güneşe merhaba!"],
["Erkan'--e --de merhaba!", "Erkan'a da merhaba!"],
["Erkan'--den orman--ler--deki ağaç--ler--e --de merhaba!", "Erkan'dan ormanlardaki ağaçlara da merhaba!"],
];
for (var _i = 0, list_5 = list; _i < list_5.length; _i++) {
var _a = list_5[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('suffix markup with numbers', function () {
var list = [
["%10'--den %50'--e varan indirimler!", "%10'dan %50'ye varan indirimler!"],
["63'--i 7'--e bölünce 9 elde edilir", "63'ü 7'ye bölünce 9 elde edilir"]
];
for (var _i = 0, list_6 = list; _i < list_6.length; _i++) {
var _a = list_6[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('consonant lenition', function () {
var list = [
["yurt--i", "yurdu"],
["kanat--i", "kanadı"],
["bilek--i", "bileği"],
["ağaç--e", "ağaca"],
["biyoloji kitap--i", "biyoloji kitabı"],
["renk--i", "rengi"],
["devlet--in", "devletin"],
["hukuk--e", "hukuka"],
["ok--i", "oku"],
["Ali at--e bak", "Ali ata bak"],
["Ahmet'--in", "Ahmet'in"],
["Zonguldak'--e", "Zonguldak'a"]
];
for (var _i = 0, list_7 = list; _i < list_7.length; _i++) {
var _a = list_7[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('adding exceptions for lenition', function () {
expect((0, index_1.inflect)('uçak', 'e')).toBe('uçağa');
expect((0, index_1.inflect)('tek', 'i')).toBe('teki');
(0, index_1.addLenitionExceptions)('uçak', 'tek');
expect((0, index_1.inflect)('uçak', 'e')).toBe('uçaka');
expect((0, index_1.inflect)('tek', 'i')).toBe('teği');
});
test('fortitive assimilation', function () {
var list = [
['market--de', 'markette'],
['kasap--den', 'kasaptan'],
["Zonguldak'--de", "Zonguldak'ta"],
["Ahmet --de geldi", "Ahmet de geldi"],
["1960'--den", "1960'tan"]
];
for (var _i = 0, list_8 = list; _i < list_8.length; _i++) {
var _a = list_8[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('fortitive assimilation for numbers', function () {
var list = [
["0'--den", "0'dan"],
["13'--den", "13'ten"],
["24'--de", "24'te"],
["24 --de", "24 de"],
["5'--de 1", "5'te 1"],
["140'--de", "140'ta"],
["32,560'--den", "32,560'tan"]
];
for (var _i = 0, list_9 = list; _i < list_9.length; _i++) {
var _a = list_9[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('adding buffer letters', function () {
var list = [
['kapı--e', 'kapıya'],
['araba--i', 'arabayı'],
["Antalya'--e", "Antalya'ya"],
["Niğde'--in", "Niğde'nin"],
["İzmir'--in", "İzmir'in"]
];
for (var _i = 0, list_10 = list; _i < list_10.length; _i++) {
var _a = list_10[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('adding buffer letters for numbers', function () {
var list = [
["12'--e", "12'ye"],
["26'--i", "26'yı"],
["250'--e", "250'ye"]
];
for (var _i = 0, list_11 = list; _i < list_11.length; _i++) {
var _a = list_11[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('suffix case match', function () {
var list = [
['DOMATES--İ', 'DOMATESİ'],
['AY--A', 'AYA'],
["AĞAÇ--İN", "AĞACIN"],
["MUSTAFA --Mİ?", "MUSTAFA MI?"],
["MARTI--E", "MARTIYA"],
["DURAK--E", "DURAĞA"],
["7'--DEN 70'--E", "7'DEN 70'E"]
];
for (var _i = 0, list_12 = list; _i < list_12.length; _i++) {
var _a = list_12[_i], source = _a[0], target = _a[1];
var result = (0, index_1.inflect)(source);
expect(result).toBe(target);
}
});
test('inflect and interpolate', function () {
var template = "{{person}}'--ın {{year}}'--de {{start}}--den {{destination}}--a yolculuğu {{people}}--ler--in --de {{person}}'--a ve uzaya ilgisini artırdı.";
var dictionary = {
person: "Neil Armstrong",
year: "1969",
start: "dünya",
destination: "ay",
people: "Amerikalı"
};
var text = (0, index_1.inflect)(template, dictionary);
expect(text).toBe("Neil Armstrong'un 1969'da dünyadan aya yolculuğu Amerikalıların da Neil Armstrong'a ve uzaya ilgisini artırdı.");
});