Skip to content

Convert a string to title case using the Daring Fireball rules.

License

Notifications You must be signed in to change notification settings

bdougherty/better-title-case

Repository files navigation

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?'));
// 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']
});
// 'Nothing to be Afraid Of?'

useDefaultExcludedWords

Type: boolean
Default: true

Disable the usage of the default list of excluded words.

titleCase('Nothing to be afraid of?', {
	useDefaultExcludedWords: false
});
// 'Nothing To Be Afraid Of?'

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
});
// 'Nothing  To Be   Afraid Of?'

License

MIT © Brad Dougherty