您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Замена ул на улица и т.д при вставке в поле ввода.
// ==UserScript== // @name WME Change RUS NameStreet for Belarus // @version 0.17 // @description Замена ул на улица и т.д при вставке в поле ввода. // @author ixxvivxxi // @include https://*.waze.com/editor* // @include https://*.waze.com/*/editor* // @include https://*.waze.com/map-editor* // @include https://*.waze.com/beta_editor* // @grant none // @namespace https://greasyfork.org/ru/scripts/10613-wme-change-rus-namestreet-for-belarus // ==/UserScript== function replace_status(streetname) { streetname = streetname.replace('ул.', 'улица ') .replace(/^ул[ ]/, 'улица ') .replace(/[ ]ул$/, ' улица') .replace('пер.', 'переулок ') .replace(/^пер[ ]/, 'переулок ') .replace(/[ ]пер$/, ' переулок') .replace('просп.', 'проспект') .replace(/^просп[ ]/, 'проспект ') .replace(/[ ]просп$/, ' проспект') .replace('пр-т.', 'проспект') .replace(/^пр-т[ ]/, 'проспект ') .replace(/[ ]пр-т$/, ' проспект') .replace('пр-д.', 'проезд') .replace(/^пр-д[ ]/, 'проезд ') .replace(/[ ]пр-д/, ' проезд') .replace('пл.', 'площадь') .replace(/^пл[ ]/, 'площадь ') .replace(/[ ]пл$/, ' площадь') .replace('ш.', 'шоссе') .replace(/^б-р[ ]/, 'бульвар ') .replace(/[ ]б-р$/, ' бульвар') .replace(/^тр-т[ ]/, 'тракт ') .replace(/[ ]тр-т$/, ' тракт') .replace('вул.', 'вуліца') .replace(/^вул[ ]/, 'вуліца ') .replace(/[ ]вул$/, ' вуліца') .replace(/^зав[ ]/, 'завулак ') .replace(/[ ]зав$/, ' завулак') .replace(/^прасп[ ]/, 'праспект ') .replace(/[ ]прасп$/, ' праспект') .replace('туп.', 'тупик ') .replace('м-н.', 'микрорайон ') .replace('сп.', 'спуск ') .replace(/^На[ ]/, 'на '); streetname = streetname.replace(/^[ ](?=[0-9а-яА-Я])/, '').replace(/[ ]+/g, ' '); streetname = streetname.replace(/-ая/, '-я') .replace(/-ой/, '-й'); streetname = streetname.replace('Я.Коласа', 'Якуба Коласа') .replace('Я. Коласа', 'Якуба Коласа') .replace('Я.Купалы', 'Янки Купалы') .replace('Я. Купалы', 'Янки Купалы') .replace('Ф.Скорины', 'Франциска Скорины') .replace('Ф. Скорины', 'Франциска Скорины') .replace('Б.Хмельницкого', 'Богдана Хмельницкого') .replace('Б. Хмельницкого', 'Богдана Хмельницкого'); return streetname; } function changeName(streetname) { var reg = /^[РрНнМмPpHM]-?([0-9])*$/; if (reg.test(streetname)) { return correctName(streetname); } else { return replaceParts(streetname); } } function correctName(streetname) { streetname = streetname.replace('р', 'Р').replace('н', 'Н').replace('м', 'М').replace('P', 'Р').replace('p', 'Р').replace('H', 'Н').replace('M', 'М'); if (streetname.search('-') == -1) { streetname = streetname.substring(0, 1) + '-' + streetname.substring(1, streetname.lenth); } return streetname; } function replaceParts(streetname) { var arr = streetname.split(' '), finalarr = [], status = -1, number = -1, i2 = 0, pseudoStatus = false; //var withStatus = false; for (var i = 0; i < arr.length; i++) { if (isStatus(arr[i])) { if (arr[i] == 'шоссе' || arr[i] === 'тракт' || arr[i] === 'площадь' || arr[i] === 'шаша' || arr[i] === 'плошча' || arr[i] === 'спуск' || arr[i] === 'въезд') { pseudoStatus = true; finalarr[i2]=arr[i]; i2++; } else { status = i; } } else if (isNumber(arr[i])) { if (i>0 && arr[i-1].toLowerCase() === 'героев') { finalarr[i2]=arr[i]; i2++; } else { number = i; } // console.log("Номер", i); } else { finalarr[i2]=arr[i]; i2++; } } if (status !== -1) { finalarr.splice(0,0,arr[status]); } else if (streetname !== '' && streetname !== 'Железная дорога' && !pseudoStatus && !streetname.startsWith('на')) { $('#sidebar .primary-street').append('<div class="bel_message" style="color:red;font-weight:bold">Необходимо добавить статусную часть!</div>'); } if (number != -1) { finalarr[finalarr.length] = arr[number]; } streetname = finalarr.join(' '); return streetname; } function isStatus(partName) { switch (partName) { case 'улица': return true; case 'переулок': return true; case 'проспект': return true; case 'проезд': return true; case 'площадь': return true; case 'шоссе': return true; case 'бульвар': return true; case 'тракт': return true; case 'тупик': return true; case 'спуск': return true; case 'въезд': return true case 'вуліца': return true; case 'завулак': return true; case 'праспект': return true; case 'праезд': return true; case 'плошча': return true; case 'шаша': return true; default: return false; } } function isNumber(number) { var reg = /([0-9])-[іыйя]/; switch (true) { case reg.test(number): return true; default: return false; } } $('#sidebar').on('input', '.street-name', function() { $('.bel_message').remove(); var newstr = replace_status($(this).val()); if ($(this).val() != newstr) { $(this).val(newstr); } }); $('#sidebar').on('change', '.street-name', function() { $('.bel_message').remove(); var newstr = replace_status($(this).val()); if ($(this).val() != newstr) { $(this).val(newstr); } }); $('#sidebar').on('focus', '.street-name', function() { $('.bel_message').remove(); var newstr = replace_status($(this).val()); newstr = changeName(newstr); $(this).val(newstr); }); $('#sidebar').on('focusout', '.street-name', function() { $('.bel_message').remove(); var newstr = replace_status($(this).val()); newstr = changeName(newstr).trim(); $(this).val(newstr); });