Select2 自定义匹配器,但保留 stripDiacritics

Select2 custom matcher, but keep stripDiacritics

我知道在以前的 select2 版本中,stripDiacritics 被导出,所以它可以在默认匹配器之外访问。在当前版本中,4.0.1 似乎不可能编写自定义匹配器并使用 select2 的 stripDiacritics,因为它没有在 $.fn.select2.defaults

中导出

我可以提取原始 stripDiacritics 以编写自定义匹配器的最佳方法是什么?

我正在尝试编写一个匹配选项文本和数据属性的匹配器。我试图避免修补 select2 的源代码,我想如果我沿着这条路走,那将是一场噩梦。

更新

我已经突出显示了实际问题,并按照评论中的建议发布了有关我正在使用的代码的更多详细信息:

我不是要别人写新的匹配器(基于 $.fn.select2.defaults.defaults.matcher) for me, I'm simply asking for the best way to pull the original stripDiacritics,它是私有的,所以我可以使用它。

我可以,只需将函数(及其依赖项:DIACRITICS 对象)复制到我的代码中,但这是我试图避免的漏洞。

由于 stripDiacriticss 是一个私有方法,您对此无能为力(除了解析源代码)。

但是,如果您对仅从 select2 代码库复制 stripDiacritics 方法并依赖 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
  })
});