]> git.wincent.com - hextrapolate.git/blob - src/joinDigits.js
9464f8a6345a82fe542409cfa8d7ef130668e563
[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: string, 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     .reverse()
30     .join('');
31 }