Skip to main content

Python Port of John Gruber's titlecase.pl

Project description

https://travis-ci.org/ppannuto/python-titlecase.svg?branch=master https://coveralls.io/repos/github/ppannuto/python-titlecase/badge.svg?branch=master

This filter changes a given text to Title Caps, and attempts to be clever about SMALL words like a/an/the in the input. The list of “SMALL words” which are not capped comes from the New York Times Manual of Style, plus some others like ‘vs’ and ‘v’.

The filter employs some heuristics to guess abbreviations that don’t need conversion.

Original

Conversion

this is a test

This Is a Test

THIS IS A TEST

This Is a Test

this is a TEST

This Is a TEST

More examples and expected behavior for corner cases are available in the package test suite.

This library is a resurrection of Stuart Colville’s titlecase.py, which was in turn a port of John Gruber’s titlecase.pl.

Issues, updates, pull requests, etc should be directed to github.

Installation

The easiest method is to simply use pip:

(sudo) pip install titlecase

Usage

Titlecase provides only one function, simply:

>>> from titlecase import titlecase
>>> titlecase('a thing')
'A Thing'

A callback function may also be supplied, which will be called for every word:

>>> def abbreviations(word, **kwargs):
...   if word.upper() in ('TCP', 'UDP'):
...     return word.upper()
...
>>> titlecase.titlecase('a simple tcp and udp wrapper', callback=abbreviations)
'A Simple TCP and UDP Wrapper'

The callback function is supplied with an all_caps keyword argument, indicating whether the entire line of text was entirely capitalized. Returning None from the callback function will allow titlecase to process the word as normal.

Command Line Usage

Titlecase also provides a command line utility titlecase:

$ titlecase make me a title
Make Me a Title
$ echo "Can pipe and/or whatever else" | titlecase
Can Pipe and/or Whatever Else
# Or read/write files:
$ titlecase -f infile -o outfile

Limitations

This is a best-effort library that uses regexes to try to do intelligent things, but will have limitations. For example, it does not have the contextual awareness to distinguish acronyms from words: us (we) versus US (United States).

The regexes and titlecasing rules were written for American English. While there is basic support for Unicode characters, such that something like “El Niño” will work, it is likely that accents or non-English phrases will not be handled correctly.

If anyone has concrete solutions to improve these or other shortcomings of the libraries, pull requests are very welcome!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

titlecase-0.13.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

titlecase-0.13.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file titlecase-0.13.0.tar.gz.

File metadata

  • Download URL: titlecase-0.13.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for titlecase-0.13.0.tar.gz
Algorithm Hash digest
SHA256 9b1d43db4c3499e47a45d4bd202068261fd585de6bd8e6313a8868533cfa4690
MD5 84b63d889301e02f90062dfb18af469c
BLAKE2b-256 a00953046248589eeabbf9e91fb3b2fc3c997d24aac5c1c7273bfa08c4bd8f42

See more details on using hashes here.

File details

Details for the file titlecase-0.13.0-py3-none-any.whl.

File metadata

File hashes

Hashes for titlecase-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a56cadd8cb1ae59b4b4f47cc220738c3dc58dfe0681f6809025da2c493876a0
MD5 c91d54549a9a8da9c29a5f9fb107be9d
BLAKE2b-256 28c2d5c40622079f32f4d067c4d7c029571cf79432f774d9c337182c1ad48d62

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page