boleto_parser
Version:
Analisador de código de barras e linha digitável de boletos
37 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertBarcodeToLine = void 0;
const barcode_to_line_1 = require("../constants/barcode-to-line");
const utils_1 = require("../utils/utils");
const get_formatted_line_1 = require("./get_formatted_line");
/**
* Converte uma numeração de um código de barras para uma linha digitável
*/
function convertBarcodeToLine(barcode, formatted = false) {
let line = splitLine(barcode, barcode_to_line_1.barcodeToLineBounds);
const parts = {
line,
part1: line.substring(0, 9),
part2: line.substring(9, 19),
part3: line.substring(19, 29),
dv: line.substring(29, 30),
part4: line.substring(30, 44),
};
line = (0, utils_1.insertAt)(line, 9, (0, utils_1.mod10)(parts.part1)); // DV1
line = (0, utils_1.insertAt)(line, 20, (0, utils_1.mod10)(parts.part2)); // DV2
line = (0, utils_1.insertAt)(line, 31, (0, utils_1.mod10)(parts.part3)); // DV3
if (formatted) {
return (0, get_formatted_line_1.getFormattedLine)(line);
}
return line;
}
exports.convertBarcodeToLine = convertBarcodeToLine;
/**
* Separa os dados do código de barras em partes de acordo com
* as definições de cada banco
*
*/
function splitLine(barcode, parts, separator = "") {
return parts.reduce((accu, part) => accu + barcode.substring(part[0], part[1]) + separator, "");
}
//# sourceMappingURL=convert_barcode_to_line.js.map