UNPKG

aux-dbf

Version:

DBF for price PSM

86 lines (70 loc) 2.15 kB
import { DBF_TABLE_TYPE } from "./DBF_TABLE_TYPE"; import { DBF_MODE } from "./DBF_MODE"; import { Column } from "./Column"; export abstract class DBFReader { /** Тип таблицы */ protected TypeTable: DBF_TABLE_TYPE; public mode: DBF_MODE; /** год изменения файла */ protected DateHeaderY: number; /** месяц изменения файла */ protected DateHeaderM: number; /** день изменения файла */ protected DateHeaderD: number; protected RecordsCount: number; /** Полная длина заголовка включая дескриптор */ protected HeaderSize: number; /** Длина одной записи */ protected RecordSize: number; /** Наличие кодировки */ protected Encode: number | string; /** Кол-во колонок */ protected ColumnCount: number; protected columns: Column[]; public getColumns() { return this.columns; } /** * Данные в формате, 1 измерение массива row, 2 измерение column */ protected dataSource: [][]; public getDate() { return ( this.DateHeaderY + "-" + this.DateHeaderM.toString().padStart(2, "0") + "-" + this.DateHeaderD.toString().padStart(2, "0") ); } public constructor(protected file: Buffer) {} abstract readHeader(): void; abstract readSignature(): void; abstract readTable(): any[][]; printHeader() { console.log(` Type: ${this.TypeTable} Date: ${this.getDate()} Number of records: ${this.RecordsCount} Header size: ${this.HeaderSize} Record size: ${this.RecordSize} Encode: ${this.Encode} Number of columns: ${this.ColumnCount} `); } printColumns() { this.columns.forEach((element, index) => { console.log( `[${index .toString() .padStart( 2, "0" )}] ${element.getType()} ${element.getTitle()} ${element.getSize()},${element.getDecimalPlaces()}` ); }); } protected readChar(offset: number): string { return String.fromCharCode(this.file.readInt8(offset)); } }