styled-components
Version:
Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅
26 lines (19 loc) • 782 B
JavaScript
// @flow
/* eslint-disable no-bitwise */
/* This is the "capacity" of our alphabet i.e. 2x26 for all letters plus their capitalised
* counterparts */
const charsLength = 52
/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */
const getAlphabeticChar = (code: number): string =>
String.fromCharCode(code + (code > 25 ? 39 : 97))
/* input a number, usually a hash and convert it to base-52 */
const generateAlphabeticName = (code: number): string => {
let name = ''
let x
/* get a char and divide by alphabet-length */
for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {
name = getAlphabeticChar(x % charsLength) + name
}
return getAlphabeticChar(x % charsLength) + name
}
export default generateAlphabeticName