UNPKG

voca

Version:

The ultimate JavaScript string library

38 lines (34 loc) 1.36 kB
import './internal/is_nil.js'; import './internal/coerce_to_boolean.js'; import './is_string.js'; import { c as coerceToString } from './internal/coerce_to_string.js'; import capitalize from './capitalize.js'; import './internal/const.js'; import { R as REGEXP_EXTENDED_ASCII, a as REGEXP_LATIN_WORD, b as REGEXP_WORD } from './internal/const_extended.js'; /** * Converts the subject to title case. * * @function titleCase * @static * @since 1.4.0 * @memberOf Case * @param {string} [subject=''] The string to convert to title case. * @param {Array} [noSplit] Do not split words at the specified characters. * @return {string} Returns the title case string. * @example * v.titleCase('learning to fly'); * // => 'Learning To Fly' * * v.titleCase('jean-luc is good-looking', ['-']); * // => 'Jean-luc Is Good-looking' */ function titleCase(subject, noSplit) { var subjectString = coerceToString(subject); var noSplitArray = Array.isArray(noSplit) ? noSplit : []; var wordsRegExp = REGEXP_EXTENDED_ASCII.test(subjectString) ? REGEXP_LATIN_WORD : REGEXP_WORD; return subjectString.replace(wordsRegExp, function (word, index) { var isNoSplit = index > 0 && noSplitArray.indexOf(subjectString[index - 1]) >= 0; return isNoSplit ? word.toLowerCase() : capitalize(word, true); }); } export default titleCase;