another-name-parser
Version:
Yet another name parser (prefix, first, middle, last, and suffix)
71 lines (43 loc) • 1.97 kB
Markdown
# another-name-parser
Here's yet another name parsing node.js library. It'll take a [personal name](https://en.wikipedia.org/wiki/Personal_name)
and returns a `prefix` (title), `first` (or *given name*), `middle` (or initial), `last` (or *family name*),
and `suffix`. It's designed for US English but could be useful elsewhere. It's inspired by a SQL script a
colleague pulled together long ago combined with inspiration from a few other libraries.
[](https://nodei.co/npm/another-name-parser/)
## Installation
Via [npm](https://www.npmjs.com/package/another-name-parser)
```bash
$ npm install another-name-parser
```
## Usage
```javascript
const parser = require('another-name-parser');
const name = parser('Commissioner James "Jim" W. Gordon, Sr.');
// → { prefix: 'Commissioner',
// first: 'James',
// middle: 'W.',
// last: 'Gordon',
// suffix: 'Sr.',
// original: 'Commissioner James "Jim" W. Gordon, Sr.' }
```
## Features
* Handles many common prefixes/titles
* Retains `.` that appear in the original name (*Dr.* → *Dr.*, *PhD* → *PhD*)
* Recognizes common compound first names (*Mary Jo*, *Juan Carlos*, etc.)
* Recognizes common compound last name prefixes (*St.*, *Mac*, *Bin*, etc.)
* Recognizes *Last Name, First Name* order
* Ignores quoted or parenthesized nicknames (*Catherine "Cathy" Smith* → *Catherine Smith*, *James (Jim) Von Trapp* → *James Von Trapp*)
## Tests
```bash
npm test
```
## TODO
* Handle multiple names, e.g, *Jim & Mark Anderson*
* Handle likely company names (maybe)
## Acknowledgements
* My former colleague and whomever he got his original script from
* Some of the test cases and compound lastname prefixes came from the [humanname](https://www.npmjs.com/package/humanname) module
## License
[MIT License](http://www.opensource.org/licenses/mit-license.php)
## Author
[Matt Klaber](https://github.com/mklaber)