]> git.wincent.com - hextrapolate.git/blob - src/joinDigits.js
1f1ee74d2f738b7f2c1ae8bc529d99c7224d3be4
[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     return DIGITS[number - 1];
13   } else {
14     return number.toString(base);
15   }
16 }
17
18 /**
19  * Turns an unpacked arbitrary-precision representation of a number, `digits`,
20  * (as produced by `getDigits`) back into a string representation in `base`.
21  */
22 export default function joinDigits(
23   digits: Array<number>,
24   base: number
25 ): string {
26   return digits
27     .slice()
28     .reverse()
29     .map(number => encode(number, base))
30     .join('');
31 }