UNPKG

p6-xer

Version:

A TypeScript module for parsing and processing Primavera P6 XER files

132 lines (100 loc) 2.81 kB
# P6 XER Parser [![Coverage](https://img.shields.io/badge/coverage-85%25-green.svg)](https://github.com/wllmtrng/p6-xer) A TypeScript module for parsing and processing Primavera P6 XER files. This package provides both synchronous and asynchronous methods for parsing XER files and exporting them to Excel format. ## Features - Parse Primavera P6 XER files - Support for both synchronous and asynchronous operations - Export to Excel (XLSX) format - Automatic encoding detection - Command-line interface (CLI) - TypeScript support with type definitions - Handles malformed data gracefully - Supports empty tables and special characters ## Installation ```bash npm install p6-xer ``` ## Usage ### As a Module ```typescript import { XerParser } from 'p6-xer'; // Create a parser instance const parser = new XerParser({ skipEmptyTables: false // optional }); // Async usage async function parseXerAsync() { const data = await parser.parse('path/to/file.xer'); await parser.exportToXlsx(data, { outputPath: 'output.xlsx', sheetNamePrefix: 'PREFIX_' // optional }); } // Sync usage function parseXerSync() { const data = parser.parseSync('path/to/file.xer'); parser.exportToXlsxSync(data, { outputPath: 'output.xlsx' }); } ``` ### Command Line Interface ```bash # Install globally npm install -g p6-xer # Export XER to Excel xer-parser export input.xer -o output.xlsx # With options xer-parser export input.xer -o output.xlsx -p PREFIX --skip-empty ``` ## API Reference ### `XerParser` #### Constructor Options ```typescript interface XerParserOptions { encoding?: BufferEncoding; // Optional encoding override skipEmptyTables?: boolean; // Skip tables with no rows } ``` #### Methods - `parse(filePath: string): Promise<XerData>` - `parseSync(filePath: string): XerData` - `exportToXlsx(data: XerData, options: ExportOptions): Promise<void>` - `exportToXlsxSync(data: XerData, options: ExportOptions): void` #### Types ```typescript interface XerData { tables: XerTable[]; header?: { version: string; date: string; project: string; id: string; user: string; database: string; system: string; currency: string; }; } interface XerTable { name: string; fields: string[]; rows: Record<string, string>[]; } interface ExportOptions { outputPath: string; sheetNamePrefix?: string; } ``` ## CLI Options ``` Options: -o, --output <path> output file path (default: "output.xlsx") -p, --prefix <prefix> sheet name prefix --skip-empty skip empty tables -h, --help display help for command ``` ## License LGPL-3.0-only ## Contributing Contributions are welcome! Please feel free to submit a Pull Request.