@zxing/library
Version:
TypeScript port of ZXing multi-format 1D/2D barcode image processing library.
275 lines (274 loc) • 9.97 kB
JavaScript
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
import NotFoundException from '../../../../NotFoundException';
var FieldParser = /** @class */ (function () {
function FieldParser() {
}
FieldParser.parseFieldsInGeneralPurpose = function (rawInformation) {
var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
if (!rawInformation) {
return null;
}
// Processing 2-digit AIs
if (rawInformation.length < 2) {
throw new NotFoundException();
}
var firstTwoDigits = rawInformation.substring(0, 2);
try {
for (var _e = __values(FieldParser.TWO_DIGIT_DATA_LENGTH), _f = _e.next(); !_f.done; _f = _e.next()) {
var dataLength = _f.value;
if (dataLength[0] === firstTwoDigits) {
if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {
return FieldParser.processVariableAI(2, dataLength[2], rawInformation);
}
return FieldParser.processFixedAI(2, dataLength[1], rawInformation);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
}
finally { if (e_1) throw e_1.error; }
}
if (rawInformation.length < 3) {
throw new NotFoundException();
}
var firstThreeDigits = rawInformation.substring(0, 3);
try {
for (var _g = __values(FieldParser.THREE_DIGIT_DATA_LENGTH), _h = _g.next(); !_h.done; _h = _g.next()) {
var dataLength = _h.value;
if (dataLength[0] === firstThreeDigits) {
if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {
return FieldParser.processVariableAI(3, dataLength[2], rawInformation);
}
return FieldParser.processFixedAI(3, dataLength[1], rawInformation);
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
}
finally { if (e_2) throw e_2.error; }
}
try {
for (var _j = __values(FieldParser.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH), _k = _j.next(); !_k.done; _k = _j.next()) {
var dataLength = _k.value;
if (dataLength[0] === firstThreeDigits) {
if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {
return FieldParser.processVariableAI(4, dataLength[2], rawInformation);
}
return FieldParser.processFixedAI(4, dataLength[1], rawInformation);
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
}
finally { if (e_3) throw e_3.error; }
}
if (rawInformation.length < 4) {
throw new NotFoundException();
}
var firstFourDigits = rawInformation.substring(0, 4);
try {
for (var _l = __values(FieldParser.FOUR_DIGIT_DATA_LENGTH), _m = _l.next(); !_m.done; _m = _l.next()) {
var dataLength = _m.value;
if (dataLength[0] === firstFourDigits) {
if (dataLength[1] === FieldParser.VARIABLE_LENGTH) {
return FieldParser.processVariableAI(4, dataLength[2], rawInformation);
}
return FieldParser.processFixedAI(4, dataLength[1], rawInformation);
}
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
}
finally { if (e_4) throw e_4.error; }
}
throw new NotFoundException();
};
FieldParser.processFixedAI = function (aiSize, fieldSize, rawInformation) {
if (rawInformation.length < aiSize) {
throw new NotFoundException();
}
var ai = rawInformation.substring(0, aiSize);
if (rawInformation.length < aiSize + fieldSize) {
throw new NotFoundException();
}
var field = rawInformation.substring(aiSize, aiSize + fieldSize);
var remaining = rawInformation.substring(aiSize + fieldSize);
var result = '(' + ai + ')' + field;
var parsedAI = FieldParser.parseFieldsInGeneralPurpose(remaining);
return parsedAI == null ? result : result + parsedAI;
};
FieldParser.processVariableAI = function (aiSize, variableFieldSize, rawInformation) {
var ai = rawInformation.substring(0, aiSize);
var maxSize;
if (rawInformation.length < aiSize + variableFieldSize) {
maxSize = rawInformation.length;
}
else {
maxSize = aiSize + variableFieldSize;
}
var field = rawInformation.substring(aiSize, maxSize);
var remaining = rawInformation.substring(maxSize);
var result = '(' + ai + ')' + field;
var parsedAI = FieldParser.parseFieldsInGeneralPurpose(remaining);
return parsedAI == null ? result : result + parsedAI;
};
FieldParser.VARIABLE_LENGTH = [];
FieldParser.TWO_DIGIT_DATA_LENGTH = [
['00', 18],
['01', 14],
['02', 14],
['10', FieldParser.VARIABLE_LENGTH, 20],
['11', 6],
['12', 6],
['13', 6],
['15', 6],
['17', 6],
['20', 2],
['21', FieldParser.VARIABLE_LENGTH, 20],
['22', FieldParser.VARIABLE_LENGTH, 29],
['30', FieldParser.VARIABLE_LENGTH, 8],
['37', FieldParser.VARIABLE_LENGTH, 8],
// internal company codes
['90', FieldParser.VARIABLE_LENGTH, 30],
['91', FieldParser.VARIABLE_LENGTH, 30],
['92', FieldParser.VARIABLE_LENGTH, 30],
['93', FieldParser.VARIABLE_LENGTH, 30],
['94', FieldParser.VARIABLE_LENGTH, 30],
['95', FieldParser.VARIABLE_LENGTH, 30],
['96', FieldParser.VARIABLE_LENGTH, 30],
['97', FieldParser.VARIABLE_LENGTH, 3],
['98', FieldParser.VARIABLE_LENGTH, 30],
['99', FieldParser.VARIABLE_LENGTH, 30],
];
FieldParser.THREE_DIGIT_DATA_LENGTH = [
// Same format as above
['240', FieldParser.VARIABLE_LENGTH, 30],
['241', FieldParser.VARIABLE_LENGTH, 30],
['242', FieldParser.VARIABLE_LENGTH, 6],
['250', FieldParser.VARIABLE_LENGTH, 30],
['251', FieldParser.VARIABLE_LENGTH, 30],
['253', FieldParser.VARIABLE_LENGTH, 17],
['254', FieldParser.VARIABLE_LENGTH, 20],
['400', FieldParser.VARIABLE_LENGTH, 30],
['401', FieldParser.VARIABLE_LENGTH, 30],
['402', 17],
['403', FieldParser.VARIABLE_LENGTH, 30],
['410', 13],
['411', 13],
['412', 13],
['413', 13],
['414', 13],
['420', FieldParser.VARIABLE_LENGTH, 20],
['421', FieldParser.VARIABLE_LENGTH, 15],
['422', 3],
['423', FieldParser.VARIABLE_LENGTH, 15],
['424', 3],
['425', 3],
['426', 3],
];
FieldParser.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH = [
// Same format as above
['310', 6],
['311', 6],
['312', 6],
['313', 6],
['314', 6],
['315', 6],
['316', 6],
['320', 6],
['321', 6],
['322', 6],
['323', 6],
['324', 6],
['325', 6],
['326', 6],
['327', 6],
['328', 6],
['329', 6],
['330', 6],
['331', 6],
['332', 6],
['333', 6],
['334', 6],
['335', 6],
['336', 6],
['340', 6],
['341', 6],
['342', 6],
['343', 6],
['344', 6],
['345', 6],
['346', 6],
['347', 6],
['348', 6],
['349', 6],
['350', 6],
['351', 6],
['352', 6],
['353', 6],
['354', 6],
['355', 6],
['356', 6],
['357', 6],
['360', 6],
['361', 6],
['362', 6],
['363', 6],
['364', 6],
['365', 6],
['366', 6],
['367', 6],
['368', 6],
['369', 6],
['390', FieldParser.VARIABLE_LENGTH, 15],
['391', FieldParser.VARIABLE_LENGTH, 18],
['392', FieldParser.VARIABLE_LENGTH, 15],
['393', FieldParser.VARIABLE_LENGTH, 18],
['703', FieldParser.VARIABLE_LENGTH, 30],
];
FieldParser.FOUR_DIGIT_DATA_LENGTH = [
// Same format as above
['7001', 13],
['7002', FieldParser.VARIABLE_LENGTH, 30],
['7003', 10],
['8001', 14],
['8002', FieldParser.VARIABLE_LENGTH, 20],
['8003', FieldParser.VARIABLE_LENGTH, 30],
['8004', FieldParser.VARIABLE_LENGTH, 30],
['8005', 6],
['8006', 18],
['8007', FieldParser.VARIABLE_LENGTH, 30],
['8008', FieldParser.VARIABLE_LENGTH, 12],
['8018', 18],
['8020', FieldParser.VARIABLE_LENGTH, 25],
['8100', 6],
['8101', 10],
['8102', 2],
['8110', FieldParser.VARIABLE_LENGTH, 70],
['8200', FieldParser.VARIABLE_LENGTH, 70],
];
return FieldParser;
}());
export default FieldParser;