Nicetitle is an implementation of John Gruber's TitleCase.pl.
The rule set is:
- Small words such as "a", "an", and "but" are not capitalized:
- except for the word "is";
- except if the previous word ended with a colon.
- The first and last words are always capitalized, even if they're small words.
- Words starting with
(
,_
,'
, or"
are capitalized e.g.__foo
becomes__Foo
. - Words starting with a dash, or words interspersed with dashes, are capitalized after every dash e.g.
-Foo-bar
becomes-Foo-Bar
. - Words interspersed with slashes are capitalized "between" every slash e.g.
foo/bar
becomesFoo/Bar
. - Words starting with a slash are not capitalized.
- URLs are not capitalized.
- Words containing capitals other than the first character are not capitalized e.g.
iOS
remains untouched. - Words containing dots are not capitalized.
- All caps sentences are down-cased before applying above mentioned rules.
Check out the test cases for a detailed overview.
Add this line to your application's Gemfile:
gem 'nicetitle'
And then execute:
$ bundle
Or install it yourself as:
$ gem install nicetitle
Calling
Nice.title('What am I reading/listing/applying these days?')
outputs
What Am I Reading/Listing/Applying These Days?
Bug reports and pull requests are welcome on GitHub at https://github.com/evaneykelen/nicetitle.
The gem is available as open source under the terms of the MIT License.
I've written an article about title casing. This article mentions the following similar projects: