Package Exports
- construparser
- construparser/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (construparser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
ConstruParser ๐๏ธ
A robust, zero-dependency* Node.js library for parsing and interchanging standard construction data formats. It supports BC3 (FIEBDC-3), Presto XML, and Presto PZU files, unifying them into a single, canonical JSON format.
TRANSFORM YOUR CONSTRUCTION DATA INTO USABLE JSON.
๐ Features
- Universal Support: Handles
BC3(standard and variants),XML(Presto), andPZU(Compressed). - Robust BC3 Parsing: intelligently handles multi-line records, single-tilde separators, and other common "real-world" format quirks.
- Order Independent: Parses hierarchies correctly even if parent items are defined after their children.
- Expression Evaluation: Built-in math engine (
mathjs) to evaluate complex logic in measurements and prices. - Encoding Safe: Handles
windows-1252(ISO-8859-1) Spanish encodings automatically.
๐ฆ Installation
npm install construparser(Note: Replace pulsing-pioneer with your actual package name if different)
๐ ๏ธ Usage
Library Usage
import ConstructionParser from './src/ConstructionParser.js'; // Adjust path as needed
import fs from 'fs';
// Read ANY supported file (bc3, xml, pzu)
const buffer = fs.readFileSync('path/to/project.bc3');
try {
// 1. Parse content
const result = ConstructionParser.parse(buffer, 'project.bc3');
// 2. Access Data
console.log(`Project: ${result.project.summary}`);
console.log(`Total: ${result.project.price} EUR`);
console.log(`Owner: ${result.metadata.owner}`);
// 3. Traverse Items
result.project.items.forEach(chapter => {
console.log(`Chapter: ${chapter.summary} (${chapter.items.length} items)`);
});
} catch (err) {
console.error("Parsing failed:", err.message);
}Command Line Tool (CLI)
The library includes a utility script to convert files directly to JSON.
# Syntax
npm run extract -- <input_file> [output_file]
# Example
npm run extract -- ./data/project.pzu ./data/converted.json๐ JSON Data Model
The output follows a strict canonical structure:
{
"metadata": {
"owner": "Software Generator Name",
"date": "01/01/2024",
"encoding": "WINDOWS-1252"
},
"project": {
"code": "PROJECT_ROOT",
"summary": "Full Project Name",
"price": 10000.00,
"unit": "ud",
"type": "0",
"items": [
{
"code": "CHAPTER_01",
"summary": "Earthworks",
"price": 5000.00,
"items": [...]
}
]
}
}๐งช Testing
We use Jest for testing.
npm test๐ค Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
Distributed under the MIT License. See LICENSE for more information.