Last active
March 30, 2016 07:21
-
-
Save isaacdozier/5ae92c1da9622c77df4c9a70a9f9a849 to your computer and use it in GitHub Desktop.
Human-readable human names (sur-names included)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
//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; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Call
capFullName()
to make most full names (first, middle, last, sur-names and apo's) human-readable.