NameTamer

Gem version Gem downloads Test Quality Gate Status

NameTamer: making sense of names

Installation

Add the gem to your application:

bundle add name_tamer

Or install it yourself:

gem install name_tamer

Supported Ruby versions

name_tamer supports the Ruby versions in normal or security maintenance upstream — currently Ruby 3.3, 3.4 and 4.0. The test suite runs against all of them.

Usage

Examples:

NameTamer['Mr. John Q. Smith III, MD'].simple_name # => John Smith

Or you can create an instance if you need several versions of the name

name_tamer = NameTamer::Name.new 'Mr. John Q. Smith III, MD'
name_tamer.slug # => john-smith
name_tamer.simple_name # => John Smith
name_tamer.nice_name # => John Q. Smith
name_tamer.contact_type # => :person

NameTamer will make an intelligent guess at the type of the name but it's not infallible. NameTamer likes it if you tell it whether the name is a person or an organization:

name_tamer = NameTamer::Name.new 'Acme Group Private Limited', contact_type: :organization
name_tamer.simple_name # => Acme Group

Upgrading from 0.x

Version 1.0.0 makes three breaking changes:

  • Ruby 3.3 or newer is required.
  • The gem no longer defines methods on String or Array. The helpers are pure functions on NameTamer::Strings (e.g. NameTamer::Strings.approximate_latin_chars('Reñé')), and each returns a new string instead of mutating the receiver.
  • The terminal-colour String methods ('text'.yellow and friends) are gone; use a dedicated gem such as rainbow if you need them.

The documented API — NameTamer[], NameTamer::Name, NameTamer.parameterize — is unchanged.

Contributing

There must be lots of name suffixes and prefixes that I haven't catered for, so please get in touch if name_tamer doesn't recognise one that you've found.

If there are any other common two-word family names that I've missed then please let me know. name_tamer tries to make sure Helena Bonham Carter gets slugified to helena-bonham-carter and not helena-carter, but I'm sure there are loads of two-word family names I don't know about.

Please read all the following articles before contributing:

How to contribute

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Acknowledgements

  1. Thanks to Ryan Bigg for the guide to making your first gem