titlecase
is a small tool and library (crate) that capitalizes English text
according to a style defined by John Gruber for post titles on his
website Daring Fireball. titlecase
runs on Linux, macOS, FreeBSD, NetBSD,
OpenBSD, and Windows. Pre-built binaries are available for download below.
titlecase
is licensed under the MIT license.
% echo 'Being productive on linux' | titlecase
Being Productive on Linux
% echo 'Finding an alternative to Mac OS X — part 2' | titlecase
Finding an Alternative to Mac OS X — Part 2
% echo 'an example with small words and sub-phrases: "the example"' | titlecase
An Example With Small Words and Sub-Phrases: "The Example"
titlecase
reads lines of text from stdin and prints title cased versions
to stdout.
See the crate documentation.
Pre-built titlecase
binaries are available:
Minimum Supported Rust Version: 1.30.1
If you have a stable Rust compiler toolchain installed you can install
the most recently released titlecase
with cargo:
% cargo install titlecase
Instead of simply capitalizing each word titlecase
does the following
(amongst other things):
- Lower case small words like an, of, or in.
- Don't capitalize words like iPhone.
- Don't interfere with file paths, URLs, domains, and email addresses.
- Always capitalize the first and last words, even if they are small words or surrounded by quotes.
- Don't interfere with terms like "Q&A", or "AT&T".
- Capitalize small words after a colon.
This tool makes use of prior work by John Gruber, Aristotle Pagaltzis, and David Gouch.