di-short-mongo-id
Version:
Short id generation from MongoDB ObjectId's
48 lines (35 loc) • 1.02 kB
JavaScript
const symbols = '0123456789abcdefghjklmnpqrstuvwxyz'.split('');
function toBase(num, base) {
let decimal = num;
let temp;
let conversion = "";
if (base > symbols.length || base <= 1) {
throw new RangeError(`Radix must be less than ${symbols.length} and greater than 1`);
}
while (decimal > 0) {
temp = Math.floor(decimal / base);
conversion = symbols[(decimal - (base * temp))] + conversion;
decimal = temp;
}
return conversion;
}
function fromBase(str, base) {
let decimal = 0;
let temp;
let conversion = reverse(str);
if (base > symbols.length || base < 2) {
throw new RangeError(`Radix must be less than ${symbols.length} and greater than 1`);
}
let i = 0;
while (conversion.length > 0) {
temp = symbols.indexOf(conversion[0]);
decimal += temp * Math.pow(base, i);
conversion = conversion.slice(1);
i++;
}
return decimal;
}
function reverse(str) {
return str.split('').reverse().join('');
}
module.exports = {toBase, fromBase, reverse};