Участник:Lingüista/case.js

Материал из Викисловаря

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
var forms = {};
var abbrs = {
	'ед' : 'единственного числа', 'дв' : 'двойственного числа', 'мн' : 'множественого числа',
	'Ном.' : 'номинатива', 'Ген.' : 'генитива', 'Дат.' : 'датива', 'Акк.' : 'аккузатива', 'Абл.' : 'аблатива', 'Вок.' : 'вокатива'
};
forms.symbols = [
	['ā', 'a'], ['ē', 'e'], ['ī', 'i'], ['ō', 'o'], ['ū', 'u']
];
forms.ps = 'Существительное Глагол Прилагательное'.split(' ');
forms.clean = function (word) {
	for ( var i in forms.symbols ) {
		word = word.replace(new RegExp(forms.symbols[i][0], "g"), forms.symbols[i][1]);
	}
	return word;
};
forms.subst = {};
forms.subst.get_cases = function (word, index) {
	tables = $('table [rules=all]');
	tab = $(tables[index]);
	num = {
		'ед' : -1,
		'дв' : -1,
		'мн' : -1
	};
	num_th = tab.find('tbody tr th');
	for ( i = 0; i < num_th.length; i ++ ) {
		cur_num = $(num_th[i]).text().match(/(ед|дв|мн)(?=\.\sч\.)/g);
		if ( cur_num !== null ) num[cur_num[0]] = i;
	}
	num_td = tab.find('tbody tr');
	cases = {};
	for ( var n in num ) {
		if ( num[n] != -1 ) {
			cases[n] = {};
			for ( i = 1; i < num_td.length; i ++ ) {
				cs = forms.clean($($(num_td[i]).find('td')[num[n]]).text());
				cases[n][$(num_td[i]).find('td a')[0].innerHTML] = cs.split(/<br>\n|,\s/);
			}
		}
	}
	coinc = [];
	for ( var num in cases ) {
		for ( var c in cases[num] ) {
			for ( i = 0; i < cases[num][c].length; i ++ ) {
				if ( cases[num][c][i] == word) {
					coinc.push('Форма ' + abbrs[num] + ' ' + abbrs[c] + ' слова <b>' + wgTitle + '</b>');
				}
			}
		}
	}
};