Skip to content

Instantly share code, notes, and snippets.

@isaacdozier
Last active March 30, 2016 07:21
Show Gist options
  • Save isaacdozier/5ae92c1da9622c77df4c9a70a9f9a849 to your computer and use it in GitHub Desktop.
Save isaacdozier/5ae92c1da9622c77df4c9a70a9f9a849 to your computer and use it in GitHub Desktop.
Human-readable human names (sur-names included)
//
//Copyright: 2016
//Author: Isaac Dozier
//Email: idoz.wow@gmail.com
//
//Builder function
function capFullName(full_name, sup){
var clean_name_arr = full_name.trim().toLowerCase().split(" ");
var new_name;
var surNameM = ["mc","mac","nic"];
var surNameY = ["y","von","van","de"];
var apo = ["'"];
var new_arr = clean_name_arr.map(function(a){
var tmp;
var frontName;
var backName;
if(arrayStartsValue(surNameM,a) && sup){
for(var i = 0;i < surNameM.length;i++){
if(a.startsWith(surNameM[i])){
backName = a.slice(surNameM[i].length, a.length);
tmp = a.replace(surNameM[i], oneWordUpper(surNameM[i]));
}
}
tmp = tmp.replace(backName, oneWordUpper(backName));
} else if(arrayInValue(apo,a)){
var before = a.search(apo)-1;
var after = a.search(apo)+1;
frontName = a.slice(0, a.search(apo));
backName = a.slice(a.search(apo)+1, a.length);
tmp = a.replace(frontName, oneWordUpper(frontName));
if(a.charAt(before) !== a.charAt(after)){
tmp = tmp.replace(backName, oneWordUpper(backName));
}
} else if(arrayIsValue(surNameY,a) && sup){
tmp = a;
} else {
tmp = oneWordUpper(a);
}
return tmp;
});
new_name = new_arr.join(" ");
return new_name;
}
//helper functions
function oneWordUpper(oneWord){
var Caps;
Caps = oneWord.charAt(0).toUpperCase();
Caps = Caps.concat(oneWord.slice(1,oneWord.length));
return Caps;
}
function arrayStartsValue(array, value){
var tmp = false;
for(var i=0; i < array.length;i++){
if(value.startsWith(array[i])){
tmp = true;
}
}
return tmp;
}
function arrayInValue(array, value){
var tmp = false;
for(var i=0; i < array.length;i++){
if(value.includes(array[i])){
tmp = true;
}
}
return tmp;
}
function arrayIsValue(array, value){
var tmp = false;
for(var i=0; i < array.length;i++){
if(value===array[i]){
tmp = true;
}
}
return tmp;
}
@isaacdozier
Copy link
Author

Call capFullName() to make most full names (first, middle, last, sur-names and apo's) human-readable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment