All files / string sentence-case.ts

100% Statements 3/3
100% Branches 2/2
100% Functions 2/2
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20                            6x 12x   6x    
import { capitalize } from './capitalize';
import { splitWords } from './split-words';
 
/**
 * Converts an identifier to a sentence, to turn a key into a label: the first word capitalized, the others in
 * lower case, acronyms kept.
 *
 * @param input - The identifier or sentence to convert, in any case style.
 * @returns The sentence; `''` when the input has no word.
 * @example
 * sentenceCase('engineRoomTemperature'); // 'Engine room temperature'
 * sentenceCase('max_speed_GPS'); // 'Max speed GPS'
 */
export function sentenceCase(input: string): string {
  const sentence = splitWords(input)
    .map((word) => (word === word.toUpperCase() ? word : word.toLowerCase()))
    .join(' ');
  return capitalize(sentence);
}