WME Change RUS NameStreet

Замена ул на улица и т.д при вставке в поле ввода.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         WME Change RUS NameStreet
// @version      0.10
// @description  Замена ул на улица и т.д при вставке в поле ввода.
// @author       ixxvivxxi
// @include      https://*.waze.com/editor*
// @include      https://*.waze.com/*/editor*
// @grant        none
// @namespace    https://greasyfork.org/scripts/8903-WME-rus-name-street
// ==/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(/[ ]б-р$/, ' бульвар');
  //streetname = streetname.trim(); 
  
    
  streetname = streetname.replace(/^улица(?=[0-9а-яА-Я])/, 'улица ')
                .replace(/^переулок(?=[0-9а-яА-Я])/, 'переулок ')
                .replace(/^проспект(?=[0-9а-яА-Я])/, 'проспект ')
                .replace(/^проезд(?=[0-9а-яА-Я])/, 'проезд ')
                .replace(/^площадь(?=[0-9а-яА-Я])/, 'площадь ')
                .replace(/^шоссе(?=[0-9а-яА-Я])/, 'шоссе ')
                .replace(/^бульвар(?=[0-9а-яА-Я])/, 'бульвар ')
                .replace(/(?=[0-9а-яА-Я])улица$/, ' улица')
                .replace(/(?=[0-9а-яА-Я])переулок$/, ' переулок')
                .replace(/(?=[0-9а-яА-Я])проспект$/, ' проспект')
                .replace(/(?=[0-9а-яА-Я])проезд$/, ' проезд')
                .replace(/(?=[0-9а-яА-Я])площадь$/, ' площадь')
                .replace(/(?=[0-9а-яА-Я])шоссе$/, ' шоссе')
                .replace(/(?=[0-9а-яА-Я])бульвар$/, ' бульвар');
  streetname = streetname.replace(/^[ ](?=[0-9а-яА-Я])/, '').replace(/[ ]+/g, ' ');
  
  return streetname;
}

function correct_adjectives(streetname) {
  $('.a_replace_name_street').remove();
  var lastchars = streetname.substring(streetname.length-2);
      
  if (lastchars == 'ая' || lastchars == 'ый'|| lastchars == 'ий' || lastchars == 'яя') {
    var arr_words = streetname.split(" ");
      if (arr_words.length > 1) {
        var firstword = arr_words[0];
    
        streetname = streetname.replace(firstword + ' ', '');
        streetname = streetname + ' ' + firstword;
        $('#sidebar .primary-street').append('<div class="a_replace_name_street" style="color:red;font-weight:bold">Возможно: <a id="a_replace_name_street" href="#" streetname="' + streetname + '">' + streetname + '</a></div>');
      }
   }
}

$('#sidebar').on('input', '.street-name', function() {
  var newstr = replace_status($(this).val());
  if ($(this).val() != newstr) {
     $(this).val(newstr);
  }
  correct_adjectives($(this).val());
});

$('#sidebar').on('change', '.street-name', function() {
  var newstr = replace_status($(this).val());
  if ($(this).val() != newstr) {
     $(this).val(newstr);
  }
  correct_adjectives($(this).val());
});

$('#sidebar').on('focus', '.street-name', function() {
  var newstr = replace_status($(this).val());
  if ($(this).val() != newstr) {
     $(this).val(newstr);
  }
  correct_adjectives($(this).val());
});

$('#sidebar').on('focusout', '.street-name', function() {
  var newstr = replace_status($(this).val());
  if ($(this).val() != newstr) {
     $(this).val(newstr);
  }
  correct_adjectives($(this).val());
});