Участник:Radmir Far/kirlat.js

/*
    Дополнение для Викификатора. Исправляет кирлат и греккир (смесь кириллицы и латиницы/греческого алфавита).
    Обратите внимание, что замены производятся до сокрытия шаблонов.
    NB. При использовании скрипта всегда проверяйте результат, так как в некоторых случаях могут быть ошибочные исправления (например, МакSим или Духless)
    При обработке больших объёмов текста скрипт может выполняться медленно.
    См. документацию на СО скрипта.
    Подключение: importScript('У:Radmir_Far/kirlat.js');
*/
( function () {
var alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯӨҮӘІЇҐҠӦӒЈҪӔӐӖҢҘҺҖҒҤЎҚҲҔӰӀЃЂЋЉЊЏЌӢӮҶҰҜҸ";
var lat = 'lABEËKMHOPCTXḰSƟYƏIÖÄJÇÆÏĂĔFŸΑΒΓΕΚΜΗΟΠΡϹΤΦΧΥΙuaeëopcyxshkθɵəǝiïöäjçæăĕěÿʙκοϲτγϊ'; 
var cyr = 'ӀАВЕЁКМНОРСТХЌЅӨҮӘІӦӒЈҪӔЇӐӖҒӰАВГЕКМНОПРСТФХҮІиаеёорсухѕһҡөөәәіїӧӓјҫӕӑӗӗӱвкостүї'; 
var lat_acut = 'ÁÉÓǼáéóýúǽό';
var cyr_acut = 'АЕОӔаеоуиӕо';
var lat_gravis = 'ÀÈÒàèòỳù';
var cyr_gravis = 'АЕОаеоуи';
var lat_macron = 'ĀŌǢāōȳǣ';
var cyr_macron = 'АОӔаоуӕ';
var i = 0;
window.wfPluginsT = window.wfPlugins || [];
window.wfPluginsT.push(function (txt, r) {
    replace_cyrlat(txt, r, lat, cyr, '');
    /*TODO: ударения и макрон можно исправлять без цикла по буквам*/
    replace_cyrlat(txt, r, lat_acut, cyr_acut, 'acut');
    replace_cyrlat(txt, r, lat_gravis, cyr_gravis, 'gravis');
    replace_cyrlat(txt, r, lat_macron, cyr_macron, 'macron');
});
function replace_cyrlat(txt, r, lat, cyr, type){
	ending = '';
	if (type == 'acut'){
		ending = '́';
	}
	if (type == 'gravis'){
		ending = '̀';
	}
	if (type == 'macron'){
		ending = '̄';
	}
	for (var ch of lat){
        for (var al of alphabet){
            var regex = new RegExp(ch + '(' + al + '|' + al.toLowerCase() + ')','g');
            r(regex, cyr[i] + ending + '$1');
            regex = new RegExp('(' + al + '|' + al.toLowerCase() + ')' + ch,'g');
            r(regex, '$1' + cyr[i] + ending);
        }
        i++;
    }
    i = 0;
}
}() );

 

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia