NameTamer
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
StringorArray. The helpers are pure functions onNameTamer::Strings(e.g.NameTamer::Strings.approximate_latin_chars('Reñé')), and each returns a new string instead of mutating the receiver. - The terminal-colour
Stringmethods ('text'.yellowand friends) are gone; use a dedicated gem such asrainbowif 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:
- Personal names around the world
- Falsehoods Programmers Believe About Names
- Last Name First
- Namae (名前)
- Matts Name Parser
- Types of business entity
- List of professional designations in the United States
- List of post-nominal letters (United Kingdom)
- Nobiliary particle
- Spanish naming customs
- Unified style sheet for linguistics [PDF]
How to contribute
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Acknowledgements
- Thanks to Ryan Bigg for the guide to making your first gem