fauton
Version:
A library to test any finite automaton with arbitrary alphabets
45 lines (44 loc) • 2.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createFileWriteStreams = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function createFileWriteStreams(logsPath, automatonLabel, outputFiles) {
const writeStreamsRecord = {
caseWriteStream: outputFiles.case
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.case.txt`))
: null,
aggregateWriteStream: outputFiles.aggregate
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.aggregate.txt`))
: null,
incorrectWriteStream: outputFiles.incorrect
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.incorrect.txt`))
: null,
correctWriteStream: outputFiles.correct
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.correct.txt`))
: null,
inputWriteStream: outputFiles.input
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.input.txt`))
: null,
acceptedWriteStream: outputFiles.accepted
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.accepted.txt`))
: null,
rejectedWriteStream: outputFiles.rejected
? fs_1.default.createWriteStream(path_1.default.resolve(logsPath, `${automatonLabel}.rejected.txt`))
: null,
};
return {
record: writeStreamsRecord,
endStreams() {
Object.values(writeStreamsRecord).forEach((writeStream) => {
if (writeStream) {
writeStream.end();
}
});
},
};
}
exports.createFileWriteStreams = createFileWriteStreams;