URL Shortner (Concise)
http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener http://mathbits.com/MathBits/CompSci/Introduction/tobase10.htm
by kshep92
HTML
<div id="message">
</div>
<div>
<table cellspacing="10" id="debug">
</table>
</div>
CSS
body {
font-family: sans-serif;
}
div {
margin: 10px 0;
line-height: 1.4;
}
td.head { font-weight: bold; }
JavaScript
var alphabet = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789".split("")
var base = alphabet.length;
function encode(id) {
var encoded = [];
while(id > 0) {
encoded.push(alphabet[id % base]);
id = parseInt(id/base);
}
return encoded.reverse().join("");
}
function decode(shortCode) {
var decoded = 0;
var indexes = [];
shortCode.split("").forEach((char) => {
indexes.push(alphabet.indexOf(char));
});
indexes.reverse().forEach((elm, idx) => {
decoded += elm * Math.pow(base, idx);
});
if(decoded < 0) return null;
return decoded;
}
function generateNumber() {
var number = '';
var excluded= [0,1];
for(var i=0; i<12; i++) {
var n;
do {
n = Math.floor(Math.random() * 10);
} while(exluded.indexOf(n) != -1);
number += n;
}
return number;
}
function truncate(str, len) {
return str.length > len ? str.substring(0, len-3).trim() + "..." : str;
}
function pin() { return Math.floor(Math.random() * 8999) + 1000; }
var giftCertNumber = generateNumber();
var shortCode = encode(giftCertNumber);
var msg = `You've received a $500.00 ${truncate("Francis Fashions Shoe Locker", 25)} gift certificate! Visit https://giftexpress.co/g/${shortCode} to claim it.`;
document.getElementById('message').innerText = msg;
var debugText = `
<tr>
<td class="head">Message Length</td>
<td>${msg.length}</td>
</tr>
<tr>
<td class="head">Gift Card # (plain)</td>
<td>GXP-${giftCertNumber}</td>
</tr>
<tr>
<td class="head">Gift Card # (decoded)</td>
<td>GXP-${decode(shortCode)}</td>
</tr>
<tr>
<td class="head">Gift Card # (encoded)</td>
<td>${shortCode}</td>
</tr>
`;
document.getElementById('debug').innerHTML = debugText;