better-title-case
Convert a string to title case based on the Daring Fireball rules.
Rules
- If the string is all-caps, it will be corrected
- The following words are not capitalized by default: a, an, and, at, but, by, for, in, nor, of, on, or, so, the, to, up, yet, v, v., vs, and vs.
- Words with capital letters other than the first are assumed to be capitalized properly and are skipped
- It also skips any word that looks like a file path, file name, or URL
- The first and last word are always capitalized
- Sub-strings (those that are within quotes or parens/braces) are capitalized according to the same rules
Installation
$ npm install --save better-title-case
Usage
import titleCase from 'better-title-case';
console.log(titleCase('Nothing to Be Afraid of?'));
Advanced
You can configure better-title-case
to add your own excluded words to the default list, or to prevent the use of the default list by passing a config
object as the second parameter.
excludedWords
Type: [string]
Default: []
Additional words to exclude from capitalization.
titleCase('Nothing to be afraid of?', {
excludedWords: ['be']
});
useDefaultExcludedWords
Type: boolean
Default: true
Disable the usage of the default list of excluded words.
titleCase('Nothing to be afraid of?', {
useDefaultExcludedWords: false
});
preserveWhitespace
Type: boolean
Default: false
Maintain extra whitespace between words. By default, all whitespace between words is collapsed to a single space.
titleCase('Nothing to be afraid of?', {
preserveWhitespace: true
});
License
MIT © Brad Dougherty