File: /var/www/tana/frontend/node_modules/locutus/php/strings/convert_uuencode.js
'use strict';
module.exports = function convert_uuencode(str) {
// eslint-disable-line camelcase
// discuss at: http://locutus.io/php/convert_uuencode/
// original by: Ole Vrijenhoek
// bugfixed by: Kevin van Zonneveld (http://kvz.io)
// bugfixed by: Brett Zamir (http://brett-zamir.me)
// reimplemented by: Ole Vrijenhoek
// example 1: convert_uuencode("test\ntext text\r\n")
// returns 1: "0=&5S=`IT97AT('1E>'0-\"@\n`\n"
var isScalar = require('../var/is_scalar');
var chr = function chr(c) {
return String.fromCharCode(c);
};
if (!str || str === '') {
return chr(0);
} else if (!isScalar(str)) {
return false;
}
var c = 0;
var u = 0;
var i = 0;
var a = 0;
var encoded = '';
var tmp1 = '';
var tmp2 = '';
var bytes = {};
// divide string into chunks of 45 characters
var chunk = function chunk() {
bytes = str.substr(u, 45).split('');
for (i in bytes) {
bytes[i] = bytes[i].charCodeAt(0);
}
return bytes.length || 0;
};
while ((c = chunk()) !== 0) {
u += 45;
// New line encoded data starts with number of bytes encoded.
encoded += chr(c + 32);
// Convert each char in bytes[] to a byte
for (i in bytes) {
tmp1 = bytes[i].toString(2);
while (tmp1.length < 8) {
tmp1 = '0' + tmp1;
}
tmp2 += tmp1;
}
while (tmp2.length % 6) {
tmp2 = tmp2 + '0';
}
for (i = 0; i <= tmp2.length / 6 - 1; i++) {
tmp1 = tmp2.substr(a, 6);
if (tmp1 === '000000') {
encoded += chr(96);
} else {
encoded += chr(parseInt(tmp1, 2) + 32);
}
a += 6;
}
a = 0;
tmp2 = '';
encoded += '\n';
}
// Add termination characters
encoded += chr(96) + '\n';
return encoded;
};
//# sourceMappingURL=convert_uuencode.js.map