@@ -184,8 +184,8 @@ public MatchResult FuzzyMatch(string query, string stringToCompare, MatchOption
184184 // in order to do so we need to verify all previous chars are part of the pattern
185185 var startIndexToVerify = compareStringIndex - currentQuerySubstringCharacterIndex ;
186186
187- if ( AllPreviousCharsMatched ( startIndexToVerify , currentQuerySubstringCharacterIndex ,
188- fullStringToCompare , currentQuerySubstring ) )
187+ if ( AllPreviousCharsMatched ( startIndexToVerify , currentQuerySubstringCharacterIndex ,
188+ fullStringToCompare , currentQuerySubstring ) )
189189 {
190190 matchFoundInPreviousLoop = true ;
191191
@@ -259,27 +259,106 @@ public MatchResult FuzzyMatch(string query, string stringToCompare, MatchOption
259259
260260 private static readonly Dictionary < char , char > AccentMap = new ( )
261261 {
262- [ 'á' ] = 'a' , [ 'à' ] = 'a' , [ 'ã' ] = 'a' , [ 'â' ] = 'a' , [ 'ä' ] = 'a' , [ 'å' ] = 'a' ,
263- [ 'é' ] = 'e' , [ 'è' ] = 'e' , [ 'ê' ] = 'e' , [ 'ë' ] = 'e' ,
264- [ 'í' ] = 'i' , [ 'ì' ] = 'i' , [ 'î' ] = 'i' , [ 'ï' ] = 'i' ,
265- [ 'ó' ] = 'o' , [ 'ò' ] = 'o' , [ 'õ' ] = 'o' , [ 'ô' ] = 'o' , [ 'ö' ] = 'o' ,
266- [ 'ú' ] = 'u' , [ 'ù' ] = 'u' , [ 'û' ] = 'u' , [ 'ü' ] = 'u' ,
262+ [ 'á' ] = 'a' ,
263+ [ 'à' ] = 'a' ,
264+ [ 'ã' ] = 'a' ,
265+ [ 'â' ] = 'a' ,
266+ [ 'ä' ] = 'a' ,
267+ [ 'å' ] = 'a' ,
268+ [ 'ā' ] = 'a' ,
269+ [ 'ă' ] = 'a' ,
270+ [ 'ą' ] = 'a' ,
271+ [ 'é' ] = 'e' ,
272+ [ 'è' ] = 'e' ,
273+ [ 'ê' ] = 'e' ,
274+ [ 'ë' ] = 'e' ,
275+ [ 'ē' ] = 'e' ,
276+ [ 'ĕ' ] = 'e' ,
277+ [ 'ė' ] = 'e' ,
278+ [ 'ę' ] = 'e' ,
279+ [ 'ě' ] = 'e' ,
280+ [ 'í' ] = 'i' ,
281+ [ 'ì' ] = 'i' ,
282+ [ 'î' ] = 'i' ,
283+ [ 'ï' ] = 'i' ,
284+ [ 'ī' ] = 'i' ,
285+ [ 'ĭ' ] = 'i' ,
286+ [ 'į' ] = 'i' ,
287+ [ 'ı' ] = 'i' ,
288+ [ 'ó' ] = 'o' ,
289+ [ 'ò' ] = 'o' ,
290+ [ 'õ' ] = 'o' ,
291+ [ 'ô' ] = 'o' ,
292+ [ 'ö' ] = 'o' ,
293+ [ 'ø' ] = 'o' ,
294+ [ 'ō' ] = 'o' ,
295+ [ 'ŏ' ] = 'o' ,
296+ [ 'ő' ] = 'o' ,
297+ [ 'ú' ] = 'u' ,
298+ [ 'ù' ] = 'u' ,
299+ [ 'û' ] = 'u' ,
300+ [ 'ü' ] = 'u' ,
301+ [ 'ū' ] = 'u' ,
302+ [ 'ŭ' ] = 'u' ,
303+ [ 'ů' ] = 'u' ,
304+ [ 'ű' ] = 'u' ,
305+ [ 'ų' ] = 'u' ,
267306 [ 'ç' ] = 'c' ,
307+ [ 'ć' ] = 'c' ,
308+ [ 'ĉ' ] = 'c' ,
309+ [ 'ċ' ] = 'c' ,
310+ [ 'č' ] = 'c' ,
268311 [ 'ñ' ] = 'n' ,
269- [ 'ý' ] = 'y' , [ 'ÿ' ] = 'y'
312+ [ 'ń' ] = 'n' ,
313+ [ 'ņ' ] = 'n' ,
314+ [ 'ň' ] = 'n' ,
315+ [ 'ŋ' ] = 'n' ,
316+ [ 'ý' ] = 'y' ,
317+ [ 'ÿ' ] = 'y' ,
318+ [ 'ŷ' ] = 'y' ,
319+ [ 'ś' ] = 's' ,
320+ [ 'ŝ' ] = 's' ,
321+ [ 'ş' ] = 's' ,
322+ [ 'š' ] = 's' ,
323+ [ 'ß' ] = 's' ,
324+ [ 'ź' ] = 'z' ,
325+ [ 'ż' ] = 'z' ,
326+ [ 'ž' ] = 'z' ,
327+ [ 'ł' ] = 'l' ,
328+ [ 'ď' ] = 'd' ,
329+ [ 'đ' ] = 'd' ,
330+ [ 'ĝ' ] = 'g' ,
331+ [ 'ğ' ] = 'g' ,
332+ [ 'ġ' ] = 'g' ,
333+ [ 'ģ' ] = 'g' ,
334+ [ 'ĥ' ] = 'h' ,
335+ [ 'ħ' ] = 'h' ,
336+ [ 'ĵ' ] = 'j' ,
337+ [ 'ķ' ] = 'k' ,
338+ [ 'ŕ' ] = 'r' ,
339+ [ 'ř' ] = 'r' ,
340+ [ 'ţ' ] = 't' ,
341+ [ 'ť' ] = 't' ,
342+ [ 'ŧ' ] = 't' ,
343+ [ 'æ' ] = 'a' ,
344+ [ 'œ' ] = 'o'
270345 } ;
346+
271347 public static string Normalize ( string value )
272348 {
273349 if ( string . IsNullOrEmpty ( value ) ) return value ;
274350 char [ ] arrayFromPool = null ;
275- Span < char > buffer = value . Length <= 512 ? stackalloc char [ value . Length ] : ( arrayFromPool = ArrayPool < char > . Shared . Rent ( value . Length ) ) ;
351+ Span < char > buffer = value . Length <= 512
352+ ? stackalloc char [ value . Length ]
353+ : ( arrayFromPool = ArrayPool < char > . Shared . Rent ( value . Length ) ) ;
276354 try
277355 {
278356 for ( int i = 0 ; i < value . Length ; i ++ )
279357 {
280358 var c = char . ToLowerInvariant ( value [ i ] ) ;
281359 buffer [ i ] = AccentMap . TryGetValue ( c , out var mapped ) ? mapped : c ;
282360 }
361+
283362 return new string ( buffer . Slice ( 0 , value . Length ) ) ;
284363 }
285364 finally
@@ -288,6 +367,7 @@ public static string Normalize(string value)
288367 ArrayPool < char > . Shared . Return ( arrayFromPool ) ;
289368 }
290369 }
370+
291371 private static bool IsAcronym ( string stringToCompare , int compareStringIndex )
292372 {
293373 if ( IsAcronymChar ( stringToCompare , compareStringIndex ) ||
0 commit comments