Skip to content

Instantly share code, notes, and snippets.

@erikhazzard
Created March 29, 2016 06:50
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save erikhazzard/798a576d7caa8c00cbe9 to your computer and use it in GitHub Desktop.
Save erikhazzard/798a576d7caa8c00cbe9 to your computer and use it in GitHub Desktop.
/**
* color hashing function
* @module generate-color-for-username
*/
var COLORS = ['#EF3C79', '#DA125F', '#990C42', '#AD41BF', '#8F18AC', '#641079', '#7F53C4', '#5E2DB3', '#41207E', '#5B68C3', '#3745AE', '#27307A', '#15B5F9', '#009AE8', '#006BA2', '#19A69A', '#008A7B', '#006056', '#9BCE5E', '#7AB538', '#567E28', '#D4E34A', '#C0CC19', '#868E11', '#E9D82E', '#FED910', '#B2980D', '#FFA700', '#B26200', '#FF7137', '#FA5200', '#AF3800', '#F55349', '#EB372C', '#A4251E', '#76909D', '#526E7B', '#394D56', '#8F6E62', '#6F4B40', '#4D342C'];
var COLORS_LENGTH = COLORS.length;
/**
* Takes in a string and returns a color. Completely deterministic.
* @param username {string} - target string to convert to color
*/
var validCharacterRegex = /[a-zA-Z0-9]/;
function generateColorForUsername ( username ){
var totalValue = 0;
for (var charIndex in username){
if(validCharacterRegex.test(username[charIndex])){
// valid character, turn character into number
totalValue += parseInt(username[charIndex], 36);
} else {
// invalid characters
totalValue += 3;
}
}
return COLORS[totalValue % COLORS_LENGTH];
}
// expose all colors
generateColorForUsername.colors = COLORS;
module.exports = generateColorForUsername;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment