I have a bunch of human names. They are all "Western" names and I only need American conventions/abbreviations (e.g., Mr. instead of Sr. for señor). Unfortunately, the people to whom I am sending things did not input their own names so I can't ask them what they would like to be called. I know the gender of each person and their full name, but haven't really parsed things out more specifically.
Some examples:
I'd like to be able to parse out parts of each name:
name = Name.new("John Smith Jr.")
name.first_name # <= John
name.greeting # <= Mr. Smith
If I'm looking for "greeting" (probably not the best term), what I want here is, for 1-4, "Mr. Smith". For 5, I would like Dr. Smith but I'd settle for Mr. Smith.
A Ruby gem for this would be ideal. I was inspired to ask for something this strange by Chronic, a Ruby gem that handles time in a remarkably human way, letting me correctly tell it "last Tuesday" and having it come up with something sensible." Some algorithm would suffice that hits most of the corner cases.
I'm trying to deal with some of the issues presented in falsehoods programmers believe about names
Since you're limited to Western-style names, I think a few rules will get you most of the way there:
{ mr mrs miss ms rev dr prof }
and any more you can think of. Using a table of title "scores" (e.g. [mr=1, mrs=1, rev=2, dr=3, prof=4]
-- order them however you want), record the highest-scoring title that was deleted.{ jr phd }
or are Roman numerals of value roughly 50 or less (/[XVI]+/
is probably a good enough regex).It will never be possible to guarantee that a name like "John Baxter Smith" is parsed correctly, since not all double-barrelled surnames use hyphens. Is "Baxter Smith" the surname? Or is "Baxter" a middle name? I think it's safe to assume that middle names are relatively more common than double-barrelled-but-unhyphenated surnames, meaning it's better to default to reporting the last word as the surname. You might want to also compile a list of common double-barrelled surnames and check against this, however.
Look on lufthansa page. They ask for them which kind of 'title' they wanna use. I never saw better idea like that.
I don't recommend use gem or whatever in this case because english/spanish/french/.... there are difference on gender, then, if you try discover by yourself, you can't be successful.
I hope help you
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With