908
*/
909
export function fuzzyContains(target: string, query: string): boolean {
911
>
return false; // return early if target or query are undefined
912
>
}
913
>
914
>
if (target.length < query.length) {
915
>
return false; // impossible for query to be contained in target
916
>
}
917
>
918
>
const targetLower = target.toLowerCase();
919
>
const queryLower = query.toLowerCase();
920
>
// toLowerCase() can change a string's length (e.g. \u0130 -> i\u0307), so iterate over the lowered query.
921
>
const queryLen = queryLower.length;
922
>
923
>
let index = 0;
924
>
let lastIndexOf = -1;
925
>
while (index < queryLen) {
926
>
const indexOf = targetLower.indexOf(queryLower[index], lastIndexOf + 1);
927
>
if (indexOf < 0) {
928
>
return false;
929
>
}
930
>
931
>
lastIndexOf = indexOf;
932
>
933
>
index++;
934
>
}
935
>
936
>
return true;
937
>
}
938
939
export function containsUppercaseCharacter(target: string, ignoreEscapedChars = false): boolean {