From bff3fb392d5dd852bf04974d5e343363a3d0aaf0 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Wed, 10 Jun 2015 17:45:19 -0600 Subject: [PATCH] move index to unibabel-mozilla --- index.js => unibabel-mozilla.js | 8 ++++-- unibabel.hex.js | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) rename index.js => unibabel-mozilla.js (97%) create mode 100644 unibabel.hex.js diff --git a/index.js b/unibabel-mozilla.js similarity index 97% rename from index.js rename to unibabel-mozilla.js index 495c990..cbe9335 100644 --- a/index.js +++ b/unibabel-mozilla.js @@ -69,13 +69,17 @@ function uint6ToB64 (nUint6) { } -function base64EncArr (aBytes) { +function base64EncArr (aBytes, delim) { var nMod3 = 2, sB64Enc = ""; for (var nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) { nMod3 = nIdx % 3; - if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; } + if (delim) { + if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { + sB64Enc += "\r\n"; + } + } nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24); if (nMod3 === 2 || aBytes.length - nIdx === 1) { sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63)); diff --git a/unibabel.hex.js b/unibabel.hex.js new file mode 100644 index 0000000..e1bf50d --- /dev/null +++ b/unibabel.hex.js @@ -0,0 +1,46 @@ +(function () { +'use strict'; + +function bufferToHex(arr) { + var i; + var len; + var hex = ''; + var c; + + for (i = 0, len = arr.length; i < len; i += 1) { + c = arr[i].toString(16); + if (c.length < 2) { + c = '0' + c; + } + hex += c; + } + + return hex; +} + +function hexToBuffer(hex) { + // TODO use Uint8Array or ArrayBuffer or DataView + var i; + var byteLen = hex.length / 2; + var arr; + var j = 0; + + if (byteLen !== parseInt(byteLen, 10)) { + throw new Error("Invalid hex length '" + hex.length + "'"); + } + + arr = new Uint8Array(byteLen); + + for (i = 0; i < byteLen; i += 1) { + arr[i] = parseInt(hex[j] + hex[j + 1], 16); + j += 2; + } + + return arr; +} + +// Hex Convenience Functions +window.Unibabel.hexToBuffer = hexToBuffer; +window.Unibabel.bufferToHex = bufferToHex; + +}());