feat: otimização de performance e ajustes finais
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const inputFile = process.argv[2];
|
||||
const outputFile = process.argv[3];
|
||||
|
||||
if (!inputFile || !outputFile) {
|
||||
console.error("Usage: node convert_salary.js <input> <output>");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const content = fs.readFileSync(inputFile, 'latin1');
|
||||
const lines = content.split(/\r?\n/);
|
||||
|
||||
const entries = [];
|
||||
const regex = /^(\d+)\s+([A-Z0-9]+)\s+(.+?)\s+((?:\d{1,3}(?:\.\d{3})*(?:,\d{2})?\s+)+)/;
|
||||
|
||||
for (const line of lines) {
|
||||
const match = line.trim().match(regex);
|
||||
if (match) {
|
||||
const code = match[2];
|
||||
let description = match[3].trim();
|
||||
const numbersPart = match[4].trim();
|
||||
|
||||
// Split numbers by whitespace
|
||||
const numbers = numbersPart.split(/\s+/).map(n => parseFloat(n.replace(/\./g, '').replace(',', '.')));
|
||||
|
||||
if (numbers.length >= 2) {
|
||||
const baseSalary = numbers[0];
|
||||
const subsidy = numbers[1];
|
||||
const gross = baseSalary + subsidy; // Calculate Gross sum
|
||||
|
||||
entries.push({
|
||||
code: code,
|
||||
name: description,
|
||||
baseSalary: baseSalary.toFixed(2),
|
||||
subsidy: subsidy.toFixed(2),
|
||||
gross: gross.toFixed(2)
|
||||
});
|
||||
} else if (numbers.length === 1) {
|
||||
// Only base
|
||||
entries.push({
|
||||
code: code,
|
||||
name: description,
|
||||
baseSalary: numbers[0].toFixed(2),
|
||||
subsidy: "0.00",
|
||||
gross: numbers[0].toFixed(2)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Parsed ${entries.length} entries.`);
|
||||
fs.writeFileSync(outputFile, JSON.stringify(entries, null, 2));
|
||||
Reference in New Issue
Block a user