UNPKG

patchwork-preloadconverter

Version:

A specialized converter for handling preload (.pld) files.

74 lines 6.84 kB
"use strict"; 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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