@technobuddha/library
Version: 
A large library of useful functions
29 lines • 2.48 kB
JavaScript
/**
 * Regular expression matching common English articles, conjunctions, and prepositions for title casing.
 * @internal
 */
const titles = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/iu;
/**
 * Convert a string to a title, capitalizing each word, except for the small words
 * @param input - the string to make title case
 * @returns the string in title case
 * @group String
 * @category Case Conversion
 */
export function titleCase(input) {
    return input.replaceAll(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/gu, (match, index, word) => {
        if (index > 0 &&
            index + match.length !== word.length &&
            match.search(titles) > -1 &&
            word.charAt(index - 2) !== ':' &&
            (word.charAt(index + match.length) !== '-' || word.charAt(index - 1) === '-') &&
            word.charAt(index - 1).search(/[^\s-]/u) < 0) {
            return match.toLocaleLowerCase();
        }
        if (match.slice(1).search(/[A-Z]|\../u) > -1) {
            return match;
        }
        return match.charAt(0).toLocaleUpperCase() + match.slice(1);
    });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUtY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aXRsZS1jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sTUFBTSxHQUFHLDZFQUE2RSxDQUFDO0FBRTdGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ3JCLG9DQUFvQyxFQUNwQyxDQUFDLEtBQUssRUFBRSxLQUFhLEVBQUUsSUFBWSxFQUFFLEVBQUU7UUFDckMsSUFDRSxLQUFLLEdBQUcsQ0FBQztZQUNULEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQ3BDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUc7WUFDOUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUM3RSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUM1QyxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDIn0=