Created
March 29, 2016 06:50
-
-
Save erikhazzard/798a576d7caa8c00cbe9 to your computer and use it in GitHub Desktop.
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
/** | |
* 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