@cspell/cspell-tools
Version:
Tools to assist with the development of cSpell
28 lines • 1.05 kB
JavaScript
// cSpell:ignore ings ning gimuy
const regExUpperSOrIng = /(\p{Lu}+'?(?:s|ing|ies|es|ings|ed|ning))(?!\p{Ll})/gu;
const regExSplitWords = /([\p{Ll}])([\p{Lu}])/gu;
const regExSplitWords2 = /(\p{Lu})(\p{Lu}\p{Ll})/gu;
const regExpIsLetter = /^\p{L}\p{M}{0,2}$/u;
/**
* Split camelCase words into an array of strings.
*/
export function splitCamelCaseWord(word) {
const pass1 = word.replaceAll(regExSplitWords, '$1|$2');
const pass2 = pass1.replaceAll(regExSplitWords2, '$1|$2');
const pass3 = pass2.replaceAll(/[\d_]+/g, '|');
return pass3.split('|').filter((a) => !!a);
}
/**
* Split camelCase words into an array of strings, try to fix English words.
*/
export function splitCamelCaseWordAutoStem(word) {
return splitCamelCaseWord(word.replaceAll(regExUpperSOrIng, tailToLowerCase));
}
function tailToLowerCase(word) {
const letters = [...word];
return letters[0] + letters.slice(1).join('').toLowerCase();
}
export function isSingleLetter(c) {
return regExpIsLetter.test(c);
}
//# sourceMappingURL=text.js.map