@@ -313,6 +313,8 @@ var BasicOptions = {
313
313
// When `true`, the algorithm continues searching to the end of the input even if a perfect
314
314
// match is found before the end of the same input.
315
315
isCaseSensitive : false ,
316
+ // When `true`, the algorithm will ignore diacritics (accents) in comparisons
317
+ ignoreDiacritics : false ,
316
318
// When true, the matching function will continue to the end of a search pattern even if
317
319
includeScore : false ,
318
320
// List of properties that will be searched. This also supports nested properties.
@@ -812,6 +814,12 @@ function createPatternAlphabet(pattern) {
812
814
return mask ;
813
815
}
814
816
817
+ var stripDiacritics = String . prototype . normalize ? function ( str ) {
818
+ return str . normalize ( 'NFD' ) . replace ( / [ \u0300 - \u036F \u0483 - \u0489 \u0591 - \u05BD \u05BF \u05C1 \u05C2 \u05C4 \u05C5 \u05C7 \u0610 - \u061A \u064B - \u065F \u0670 \u06D6 - \u06DC \u06DF - \u06E4 \u06E7 \u06E8 \u06EA - \u06ED \u0711 \u0730 - \u074A \u07A6 - \u07B0 \u07EB - \u07F3 \u07FD \u0816 - \u0819 \u081B - \u0823 \u0825 - \u0827 \u0829 - \u082D \u0859 - \u085B \u08D3 - \u08E1 \u08E3 - \u0903 \u093A - \u093C \u093E - \u094F \u0951 - \u0957 \u0962 \u0963 \u0981 - \u0983 \u09BC \u09BE - \u09C4 \u09C7 \u09C8 \u09CB - \u09CD \u09D7 \u09E2 \u09E3 \u09FE \u0A01 - \u0A03 \u0A3C \u0A3E - \u0A42 \u0A47 \u0A48 \u0A4B - \u0A4D \u0A51 \u0A70 \u0A71 \u0A75 \u0A81 - \u0A83 \u0ABC \u0ABE - \u0AC5 \u0AC7 - \u0AC9 \u0ACB - \u0ACD \u0AE2 \u0AE3 \u0AFA - \u0AFF \u0B01 - \u0B03 \u0B3C \u0B3E - \u0B44 \u0B47 \u0B48 \u0B4B - \u0B4D \u0B56 \u0B57 \u0B62 \u0B63 \u0B82 \u0BBE - \u0BC2 \u0BC6 - \u0BC8 \u0BCA - \u0BCD \u0BD7 \u0C00 - \u0C04 \u0C3E - \u0C44 \u0C46 - \u0C48 \u0C4A - \u0C4D \u0C55 \u0C56 \u0C62 \u0C63 \u0C81 - \u0C83 \u0CBC \u0CBE - \u0CC4 \u0CC6 - \u0CC8 \u0CCA - \u0CCD \u0CD5 \u0CD6 \u0CE2 \u0CE3 \u0D00 - \u0D03 \u0D3B \u0D3C \u0D3E - \u0D44 \u0D46 - \u0D48 \u0D4A - \u0D4D \u0D57 \u0D62 \u0D63 \u0D82 \u0D83 \u0DCA \u0DCF - \u0DD4 \u0DD6 \u0DD8 - \u0DDF \u0DF2 \u0DF3 \u0E31 \u0E34 - \u0E3A \u0E47 - \u0E4E \u0EB1 \u0EB4 - \u0EB9 \u0EBB \u0EBC \u0EC8 - \u0ECD \u0F18 \u0F19 \u0F35 \u0F37 \u0F39 \u0F3E \u0F3F \u0F71 - \u0F84 \u0F86 \u0F87 \u0F8D - \u0F97 \u0F99 - \u0FBC \u0FC6 \u102B - \u103E \u1056 - \u1059 \u105E - \u1060 \u1062 - \u1064 \u1067 - \u106D \u1071 - \u1074 \u1082 - \u108D \u108F \u109A - \u109D \u135D - \u135F \u1712 - \u1714 \u1732 - \u1734 \u1752 \u1753 \u1772 \u1773 \u17B4 - \u17D3 \u17DD \u180B - \u180D \u1885 \u1886 \u18A9 \u1920 - \u192B \u1930 - \u193B \u1A17 - \u1A1B \u1A55 - \u1A5E \u1A60 - \u1A7C \u1A7F \u1AB0 - \u1ABE \u1B00 - \u1B04 \u1B34 - \u1B44 \u1B6B - \u1B73 \u1B80 - \u1B82 \u1BA1 - \u1BAD \u1BE6 - \u1BF3 \u1C24 - \u1C37 \u1CD0 - \u1CD2 \u1CD4 - \u1CE8 \u1CED \u1CF2 - \u1CF4 \u1CF7 - \u1CF9 \u1DC0 - \u1DF9 \u1DFB - \u1DFF \u20D0 - \u20F0 \u2CEF - \u2CF1 \u2D7F \u2DE0 - \u2DFF \u302A - \u302F \u3099 \u309A \uA66F - \uA672 \uA674 - \uA67D \uA69E \uA69F \uA6F0 \uA6F1 \uA802 \uA806 \uA80B \uA823 - \uA827 \uA880 \uA881 \uA8B4 - \uA8C5 \uA8E0 - \uA8F1 \uA8FF \uA926 - \uA92D \uA947 - \uA953 \uA980 - \uA983 \uA9B3 - \uA9C0 \uA9E5 \uAA29 - \uAA36 \uAA43 \uAA4C \uAA4D \uAA7B - \uAA7D \uAAB0 \uAAB2 - \uAAB4 \uAAB7 \uAAB8 \uAABE \uAABF \uAAC1 \uAAEB - \uAAEF \uAAF5 \uAAF6 \uABE3 - \uABEA \uABEC \uABED \uFB1E \uFE00 - \uFE0F \uFE20 - \uFE2F ] / g, '' ) ;
819
+ } : function ( str ) {
820
+ return str ;
821
+ } ;
822
+
815
823
var BitapSearch = /*#__PURE__*/ function ( ) {
816
824
function BitapSearch ( pattern ) {
817
825
var _this = this ;
@@ -830,6 +838,8 @@ var BitapSearch = /*#__PURE__*/function () {
830
838
minMatchCharLength = _ref$minMatchCharLeng === void 0 ? Config . minMatchCharLength : _ref$minMatchCharLeng ,
831
839
_ref$isCaseSensitive = _ref . isCaseSensitive ,
832
840
isCaseSensitive = _ref$isCaseSensitive === void 0 ? Config . isCaseSensitive : _ref$isCaseSensitive ,
841
+ _ref$ignoreDiacritics = _ref . ignoreDiacritics ,
842
+ ignoreDiacritics = _ref$ignoreDiacritics === void 0 ? Config . ignoreDiacritics : _ref$ignoreDiacritics ,
833
843
_ref$ignoreLocation = _ref . ignoreLocation ,
834
844
ignoreLocation = _ref$ignoreLocation === void 0 ? Config . ignoreLocation : _ref$ignoreLocation ;
835
845
_classCallCheck ( this , BitapSearch ) ;
@@ -841,9 +851,12 @@ var BitapSearch = /*#__PURE__*/function () {
841
851
findAllMatches : findAllMatches ,
842
852
minMatchCharLength : minMatchCharLength ,
843
853
isCaseSensitive : isCaseSensitive ,
854
+ ignoreDiacritics : ignoreDiacritics ,
844
855
ignoreLocation : ignoreLocation
845
856
} ;
846
- this . pattern = isCaseSensitive ? pattern : pattern . toLowerCase ( ) ;
857
+ pattern = isCaseSensitive ? pattern : pattern . toLowerCase ( ) ;
858
+ pattern = ignoreDiacritics ? stripDiacritics ( pattern ) : pattern ;
859
+ this . pattern = pattern ;
847
860
this . chunks = [ ] ;
848
861
if ( ! this . pattern . length ) {
849
862
return ;
@@ -877,10 +890,10 @@ var BitapSearch = /*#__PURE__*/function () {
877
890
value : function searchIn ( text ) {
878
891
var _this$options = this . options ,
879
892
isCaseSensitive = _this$options . isCaseSensitive ,
893
+ ignoreDiacritics = _this$options . ignoreDiacritics ,
880
894
includeMatches = _this$options . includeMatches ;
881
- if ( ! isCaseSensitive ) {
882
- text = text . toLowerCase ( ) ;
883
- }
895
+ text = isCaseSensitive ? text : text . toLowerCase ( ) ;
896
+ text = ignoreDiacritics ? stripDiacritics ( text ) : text ;
884
897
885
898
// Exact match
886
899
if ( this . pattern === text ) {
0 commit comments