* True if the first character of `lowercaseCharacters` is the first character * of some "word" in `identiferString` (where the string is split into "words" * by camelCase and snake_case segments), then if the remaining characters of * `lowercaseCharacters` appear, in order
(identifierString, lowercaseCharacters)
| 135493 | * 'ment' in 'ENVIRONMENT_VARIABLE' |
| 135494 | */ |
| 135495 | function charactersFuzzyMatchInString(identifierString, lowercaseCharacters) { |
| 135496 | if (lowercaseCharacters.length === 0) { |
| 135497 | return true; |
| 135498 | } |
| 135499 | var matchedFirstCharacter = false; |
| 135500 | var prevChar; |
| 135501 | var characterIndex = 0; |
| 135502 | var len = identifierString.length; |
| 135503 | for (var strIndex = 0; strIndex < len; strIndex++) { |
| 135504 | var strChar = identifierString.charCodeAt(strIndex); |
| 135505 | var testChar = lowercaseCharacters.charCodeAt(characterIndex); |
| 135506 | if (strChar === testChar || strChar === toUpperCharCode(testChar)) { |
| 135507 | matchedFirstCharacter || (matchedFirstCharacter = prevChar === undefined || // Beginning of word |
| 135508 | 97 /* CharacterCodes.a */ <= prevChar && prevChar <= 122 /* CharacterCodes.z */ && 65 /* CharacterCodes.A */ <= strChar && strChar <= 90 /* CharacterCodes.Z */ || // camelCase transition |
| 135509 | prevChar === 95 /* CharacterCodes._ */ && strChar !== 95 /* CharacterCodes._ */); // snake_case transition |
| 135510 | if (matchedFirstCharacter) { |
| 135511 | characterIndex++; |
| 135512 | } |
| 135513 | if (characterIndex === lowercaseCharacters.length) { |
| 135514 | return true; |
| 135515 | } |
| 135516 | } |
| 135517 | prevChar = strChar; |
| 135518 | } |
| 135519 | // Did not find all characters |
| 135520 | return false; |
| 135521 | } |
| 135522 | function toUpperCharCode(charCode) { |
| 135523 | if (97 /* CharacterCodes.a */ <= charCode && charCode <= 122 /* CharacterCodes.z */) { |
| 135524 | return charCode - 32; |
no test coverage detected