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