163 lines
5.5 KiB
JavaScript
163 lines
5.5 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.decodeAsciiMax15 = exports.decodeAscii = void 0;
|
||
|
const fromCharCode = String.fromCharCode;
|
||
|
const decodeAscii = (src, position, length) => {
|
||
|
const bytes = [];
|
||
|
for (let i = 0; i < length; i++) {
|
||
|
const byte = src[position++];
|
||
|
if (byte & 0x80)
|
||
|
return;
|
||
|
bytes.push(byte);
|
||
|
}
|
||
|
return fromCharCode.apply(String, bytes);
|
||
|
};
|
||
|
exports.decodeAscii = decodeAscii;
|
||
|
const decodeAsciiMax15 = (src, position, length) => {
|
||
|
if (length < 4) {
|
||
|
if (length < 2) {
|
||
|
if (length === 0)
|
||
|
return '';
|
||
|
else {
|
||
|
const a = src[position++];
|
||
|
if ((a & 0x80) > 1) {
|
||
|
position -= 1;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const a = src[position++];
|
||
|
const b = src[position++];
|
||
|
if ((a & 0x80) > 0 || (b & 0x80) > 0) {
|
||
|
position -= 2;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 3)
|
||
|
return fromCharCode(a, b);
|
||
|
const c = src[position++];
|
||
|
if ((c & 0x80) > 0) {
|
||
|
position -= 3;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const a = src[position++];
|
||
|
const b = src[position++];
|
||
|
const c = src[position++];
|
||
|
const d = src[position++];
|
||
|
if ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {
|
||
|
position -= 4;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 6) {
|
||
|
if (length === 4)
|
||
|
return fromCharCode(a, b, c, d);
|
||
|
else {
|
||
|
const e = src[position++];
|
||
|
if ((e & 0x80) > 0) {
|
||
|
position -= 5;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c, d, e);
|
||
|
}
|
||
|
}
|
||
|
else if (length < 8) {
|
||
|
const e = src[position++];
|
||
|
const f = src[position++];
|
||
|
if ((e & 0x80) > 0 || (f & 0x80) > 0) {
|
||
|
position -= 6;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 7)
|
||
|
return fromCharCode(a, b, c, d, e, f);
|
||
|
const g = src[position++];
|
||
|
if ((g & 0x80) > 0) {
|
||
|
position -= 7;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c, d, e, f, g);
|
||
|
}
|
||
|
else {
|
||
|
const e = src[position++];
|
||
|
const f = src[position++];
|
||
|
const g = src[position++];
|
||
|
const h = src[position++];
|
||
|
if ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {
|
||
|
position -= 8;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 10) {
|
||
|
if (length === 8)
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h);
|
||
|
else {
|
||
|
const i = src[position++];
|
||
|
if ((i & 0x80) > 0) {
|
||
|
position -= 9;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i);
|
||
|
}
|
||
|
}
|
||
|
else if (length < 12) {
|
||
|
const i = src[position++];
|
||
|
const j = src[position++];
|
||
|
if ((i & 0x80) > 0 || (j & 0x80) > 0) {
|
||
|
position -= 10;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 11)
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i, j);
|
||
|
const k = src[position++];
|
||
|
if ((k & 0x80) > 0) {
|
||
|
position -= 11;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i, j, k);
|
||
|
}
|
||
|
else {
|
||
|
const i = src[position++];
|
||
|
const j = src[position++];
|
||
|
const k = src[position++];
|
||
|
const l = src[position++];
|
||
|
if ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {
|
||
|
position -= 12;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 14) {
|
||
|
if (length === 12)
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l);
|
||
|
else {
|
||
|
const m = src[position++];
|
||
|
if ((m & 0x80) > 0) {
|
||
|
position -= 13;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const m = src[position++];
|
||
|
const n = src[position++];
|
||
|
if ((m & 0x80) > 0 || (n & 0x80) > 0) {
|
||
|
position -= 14;
|
||
|
return;
|
||
|
}
|
||
|
if (length < 15)
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
|
||
|
const o = src[position++];
|
||
|
if ((o & 0x80) > 0) {
|
||
|
position -= 15;
|
||
|
return;
|
||
|
}
|
||
|
return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
exports.decodeAsciiMax15 = decodeAsciiMax15;
|
||
|
//# sourceMappingURL=decodeAscii.js.map
|