Участник: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>');
}
}
}
}
};