voca
Version:
The ultimate JavaScript string library
38 lines (34 loc) • 1.36 kB
JavaScript
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;