patchwork-preloadconverter
Version:
A specialized converter for handling preload (.pld) files.
74 lines • 6.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.PreloadConverter = void 0;
const fs_1 = require("fs");
const promises_1 = require("fs/promises");
const LoggerFactory_1 = require("../logging/LoggerFactory");
const readline_1 = require("readline");
const node_os_1 = require("node:os");
const log = LoggerFactory_1.LoggerFactory.createLogger("PreloadConverter");
const preloadRegex = /call Preload\(\s*\"(?<content>.*)\"\s*\)/gm;
async function extractPreloadLines(inputPath) {
const fileStream = (0, fs_1.createReadStream)(inputPath);
const readLine = (0, readline_1.createInterface)({ input: fileStream, crlfDelay: Infinity });
let startFound = false;
const result = [];
for await (const line of readLine) {
if (line.includes("PreloadEnd")) {
break;
}
if (startFound) {
result.push(line);
}
if (line.includes("PreloadStart")) {
startFound = true;
}
}
fileStream.close();
return result;
}
function filterPreloadCalls(preloadLines) {
return preloadLines.map(it => {
preloadRegex.lastIndex = 0;
const result = preloadRegex.exec(it);
return result?.groups?.content;
}).map(it => (it == null) ? "" : it);
}
async function writeLinesToFile(lines, outputPath, eol) {
await (0, promises_1.writeFile)(outputPath, lines.join(eol));
}
async function readFileLines(inputPath) {
const fileStream = (0, fs_1.createReadStream)(inputPath);
const readLine = (0, readline_1.createInterface)({ input: fileStream, crlfDelay: Infinity });
const result = [];
for await (const line of readLine) {
result.push(line);
}
return result;
}
function compilePreloadContent(preloadFunction, lines) {
const result = [];
result.push(`function ${preloadFunction} takes nothing returns nothing`);
result.push(`\tcall PreloadStart()`);
lines.forEach(it => result.push(`\tcall Preload("${it}")`));
result.push(`\tcall PreloadEnd( 0.0 )`);
result.push(`endfunction`);
return result;
}
exports.PreloadConverter = {
async parsePreloadFile(inputPath, outputPath) {
log.info(`Converting '${inputPath}' to '${outputPath}'`);
const preloadLines = await extractPreloadLines(inputPath);
log.info(`Found ${preloadLines.length} lines.`);
await writeLinesToFile(filterPreloadCalls(preloadLines), outputPath, node_os_1.EOL);
log.info(`Exported preload content to '${outputPath}'`);
},
async compilePreloadFile(inputPath, outputPath, preloadFunction) {
log.info(`Compiling '${inputPath}' to '${outputPath}'`);
const content = await readFileLines(inputPath);
log.info(`Found ${content.length} lines.`);
await writeLinesToFile(compilePreloadContent(preloadFunction, content), outputPath, '\r\n');
log.info(`Compiled file content into '${outputPath}' preload file.`);
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlbG9hZENvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0ZXIvUHJlbG9hZENvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBc0M7QUFDdEMsMENBQXdDO0FBQ3hDLDREQUF5RDtBQUN6RCx1Q0FBMkM7QUFDM0MscUNBQThCO0FBRTlCLE1BQU0sR0FBRyxHQUFHLDZCQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFM0QsTUFBTSxZQUFZLEdBQUcsNENBQTRDLENBQUM7QUFFbEUsS0FBSyxVQUFVLG1CQUFtQixDQUFDLFNBQWlCO0lBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUEscUJBQWdCLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQkFBZSxFQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUM1RSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUE7SUFDdEIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU07UUFDVixDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2hDLFVBQVUsR0FBRyxJQUFJLENBQUE7UUFDckIsQ0FBQztJQUNMLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFbkIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUVELFNB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
;