UNPKG

flashmagic.js

Version:
52 lines (51 loc) 1.5 kB
"use strict"; var Symbol = require('es6-symbol'); var _checksumSym = Symbol(); var UUEncoder = (function () { function UUEncoder() { this[_checksumSym] = 0; } Object.defineProperty(UUEncoder.prototype, "checksum", { get: function () { return this[_checksumSym]; }, enumerable: true, configurable: true }); UUEncoder.prototype.reset = function () { this[_checksumSym] = 0; }; UUEncoder.prototype.encode = function (data, offset, length) { var out = encodeSingle(length); var sum = 0; var n = ~~(length / 3) * 3; var m = n + offset; var i = offset; while (i < m) { var a = data[i++]; var b = data[i++]; var c = data[i++]; out += encodeTriple(a, b, c); sum += a + b + c; } if (n < length) { var a = data[i++]; var b = (n + 1 < length) ? data[i] : 0; out += encodeTriple(a, b, 0); sum += a + b; } this[_checksumSym] += sum; return out; }; return UUEncoder; }()); exports.UUEncoder = UUEncoder; function encodeSingle(b) { return String.fromCharCode(b ? (b + 32) : 0x60); } function encodeTriple(a, b, c) { return encodeSingle((a >>> 2) & 0x3F) + encodeSingle(((a << 4) & 0x30) | ((b >>> 4) & 0x0F)) + encodeSingle(((b << 2) & 0x3C) | ((c >>> 6) & 0x03)) + encodeSingle(c & 0x3F); }