Select2 пользовательские совпадений, но держать stripDiacritics

Я знаю, что в предыдущих версиях select2 stripDiacritics был экспортирован, поэтому он был доступен за пределами сопоставления по умолчанию. В текущей версии 4.0.1 кажется невозможным написать пользовательский сопоставитель и использовать stripDiacritics select2, так как не экспортируется в $.fn.select2.defaults

какой лучший способ я могу вытащить оригинальный stripDiacritics для меня написать пользовательский сопоставитель?

Я пытаюсь написать сопоставитель, который соответствует как тексту опции, так и данным атрибут. Я пытаюсь избежать исправления источника select2, я думаю, что это будет кошмар, если я пойду по этому пути.

обновление

я выделил фактический вопрос и опубликовал дополнительные сведения о коде, с которым я работаю, как предложено в комментариях:

Я не прошу кого-то написать новый matcher (на основе $.fn.select2.defaults.defaults.matcher) для меня, я просто прошу лучшие способ вытащить оригинальный stripDiacritics, который является частным, так что я могу использовать его.

я мог бы просто скопировать функцию (и это зависимости:DIACRITICS object) для моего кода, но это дыра, которую я пытаюсь избежать.

1 ответов


С stripDiacriticss-это частный метод, с ним мало что можно сделать (кроме разбора исходного кода).

однако, если вы довольны копированием только stripDiacritics метод из кодовой базы select2 и полагаясь на select2 для предоставления DIACRITICS зависимость, вы всегда можете просто потребовать 'select2/diacritics' модуль:

$.fn.select2.amd.require(['select2/diacritics'], function (DIACRITICS) {
  // stripDiacritics code copied from select2
  function stripDiacritics (text) {
    // Used 'uni range + named function' from http://jsperf.com/diacritics/18
    function match(a) {
      return DIACRITICS[a] || a;
    }

    return text.replace(/[^\u0000-\u007E]/g, match);
  }

  $(".awesome").select2({
    // declare your matcher code here with access to stripDiacritics
  })
});