]> git.wincent.com - hextrapolate.git/blob - src/joinDigits.js
bb0620b1837601e968f0a5efc3967c39180af414
[hextrapolate.git] / src / joinDigits.js
1 /**
2  * Copyright 2003-present Greg Hurrell. All rights reserved.
3  * Licensed under the terms of the MIT license.
4  *
5  * @flow
6  */
7
8 import DIGITS from './DIGITS';
9
10 function encode(number: number, base: number) {
11   if (base > 36 && base <= 62) {
12     // This branch really only ever called for serializing to the URL.
13     return DIGITS[number - 1];
14   } else {
15     return number.toString(base);
16   }
17 }
18
19 /**
20  * Turns an unpacked arbitrary-precision representation of a number, `digits`,
21  * (as produced by `getDigits`) back into a string representation in `base`.
22  */
23 export default function joinDigits(
24   digits: Array<number>,
25   base: number
26 ): string {
27   return digits
28     .map(number => encode(number, base))
29     .join('');
30 }