2.0.4 • Published 2 years ago

capitalize v2.0.4

Weekly downloads
95,593
License
MIT
Repository
github
Last release
2 years ago

capitalize Build

Capitalize the first letter of a string, or all words in a string.

Synopsis

Capitalize the first letter of a string:

var capitalize = require('capitalize')

var test = require('tape')

test('Capitalize first letter', function (t) {
  t.plan(1)
  t.equal(capitalize("united states"), "United states")
})

Or capitalize each word in a string:

test('Capitalize each word', function (t) {
  t.plan(1)
  t.equal(capitalize.words("united states"), "United States")
})

No matter the original case:

test('Capitalize first letter with original string...', function (t) {
  t.plan(2)

  t.test('...in upper case', function (t1) {
    t1.plan(1)
    t1.equal(capitalize.words("UNITED STATES"), "United States")
  })

  t.test('...in mixed case', function (t2) {
    t2.plan(1)
    t2.equal(capitalize.words("uNiTeD sTaTeS"), "United States")
  })

})

test('Capitalize each word with original string...', function (t) {
  t.plan(2)

  t.test('...in upper case', function (t1) {
    t1.plan(1)
    t1.equal(capitalize.words("UNITED STATES"), "United States")
  })

  t.test('...in mixed case', function (t2) {
    t2.plan(1)
    t2.equal(capitalize.words("uNiTeD sTaTeS"), "United States")
  })

})

Thanks to @c990802 and Stack Overflow, capitalize handles international characters:

test('Capitalize words with international characters', function (t) {
  t.plan(1)
  t.equal(capitalize.words('hello-cañapolísas'), 'Hello-Cañapolísas')
})

and thanks to @6akcuk it can also capitalize cyrillic characters:

test('Capitalize words with cyrillic characters', function (t) {
  t.plan(1)
  t.equal(capitalize.words('привет мир'), "Привет Мир")
})

and thanks to @ultraflynn and @DatGuyJonathon capitalize properly handles quotes within the string:

test('Capitalize each word, ignoring quotes', function(t) {
    t.plan(1)
    t.equal(capitalize.words("it's a nice day"), "It's A Nice Day")
})

test('Quotes test case 2', function(t) {
    t.plan(1)
    t.equal(capitalize.words("It’s a Boy"), "It’s A Boy")
})

test('Handles embedded quotes', function(t) {
    t.plan(1)
    t.equal(capitalize.words("'There's angels among us'"), "'There's Angels Among Us'")
})

and thanks to @sergejkaravajnij, capitalize also supports a second boolean parameter to preserve casing of the rest of the strings content:

test('Capitalize a string, preserving the original case of other letters', function (t) {
  t.plan(1)
  t.equal(capitalize('canDoItRight', true), 'CanDoItRight')
})

test('Capitalize words, preserving the case', function (t) {
  t.plan(1)
  t.equal(capitalize.words('on gitHub', true), 'On GitHub')
})

and thanks to @rubengmurray, capitalize now handles shorthand ordinal numbers as would be expected:

test('Capitalize words, handling shorthand ordinals (1st, 2nd, 3rd) correctly', function (t) {
  t.plan(1)
  t.equal(capitalize.words('1st place'), '1st Place')
})

and thanks to a suggestion from @Songyu-Wang, capitalize supports skipping words that should never be capitalized (e.g. articles and coordinating conjunctions in English).

test('Title-case words, by providing a skipWord regex', function (t) {
  t.plan(1)
  var opts = { skipWord: /^(a|the|an|and|or|but|in|on|of|it)$/ }
  t.equal(
    capitalize.words('the story of an unlikely feature and the way it was implemented', opts),
    'The Story of an Unlikely Feature and the Way it Was Implemented'
  )
})

test('Title-case words, by providing a skipWord callback', function (t) {
  t.plan(1)
  t.equal(
    capitalize.words('this is nice eh?', { skipWord: (word) => word.length < 3 }),
    'This is Nice eh?'
  )
})

Install

npm install capitalize

License

MIT

bgc-shared-frontend-components@jas99/graphql-resolver-codegensanity-plugin-schema-chodescrb-ui-quasar@zachariahtimothy/graphql-resolver-codegen@bgcbrasil/utilssao-ulauncher-extensionsao-gcloud-fn-gosunrise-x3d-editor@infinitebrahmanuniverse/nolb-capi@mediatool/mt-mediaplanning-ui@everything-registry/sub-chunk-1293@hypergraph-xyz/clihg-inputhg-textareahumanize-proptypekap-hide-desktop-iconskea-resourceskoa-better-error-handlerlaura-p-first-package-testindexriris-qljaidbotjkhjjourney-uijoe-almmongoose-validation-error-transformneutronni-clinidammarkdown-tableifymobile-orientationmongo-shell-schema-pluginmishear-phrasehtml-tableifyjson-schema-flattenjreleasejsontocrjson2xnerdgramnew_prrrrmenternship-utils-hapimanuscriptjslpgeneratormezurnodehandler-utils@trackunit/ui-icons@ref/coap@sounisi5011/encrypted-archive@soyjak/utils@therebel/docz@timsuchanek/test-shortener@pxwlab/katana@radist2s/json2x@startupquickstart/server@twinski/kickstart-cli@seidhr/sanity-plugin-muna-schemasaldo-react-component-gulp-tasksalm-cli@vtfk/elev-varsel-generate-document-title@wizmea/twingangular-module-builder@aikosia/automaton-cli@abranhe/feedbackapogeu@abstractball/journey-ui@ayerin/ddd-base@axway/api-builder-admin-api@axway/api-builder-oas-flow-node@axway/api-builder-openapi-upgrade@ctt/apig@beam-australia/formik@cs125/personable@daiyam/docz@dawsonbotsford/humanize-proptypeconnector-builder@bill-doc/doc-corebx-contra-spreadbuscandriucapitalcapitalizarhb-full-clinotifier-componentsnverobject-transform-stackoctophantone-coapq5-react-component-gulp-tasksprosperpwaxrandom-titleratifyrabbitmq-schemarabbitmq-schema-lvcrabbit-mermaidrabbit-mermaid-clipostnordpowrpokemon-tcg-scraperpositioner
2.0.4

2 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

6 years ago

1.0.0

9 years ago

0.5.0

10 years ago

0.4.3

12 years ago

0.4.2

12 years ago

0.4.1

12 years ago

0.4.0

12 years ago

0.3.4

12 years ago

0.3.3

12 years ago

0.3.2

12 years ago

0.3.1

12 years ago

0.3.0

12 years ago

0.2.4

12 years ago

0.2.3

12 years ago

0.2.2

12 years ago

0.2.1

12 years ago

0.2.0

12 years ago