@scalenc/nc-format
Version:
Library for handling TRUMPF NC file format.
54 lines • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Writer = void 0;
const Constants_1 = require("./Constants");
const StatementWriter_1 = require("./StatementWriter");
const TextWriter_1 = require("./TextWriter");
class Writer {
stream = new TextWriter_1.TextWriter();
get text() {
return this.stream.text;
}
static toStrings(ncText) {
return ncText.blocks.map(Writer.write);
}
static toString(ncText, newLineChar = '\n') {
return this.toStrings(ncText).join(newLineChar);
}
static write(block) {
return new Writer().write(block).text.trimEnd();
}
write(block) {
this.writeLineNumber(block.blockNumber).writeLabels(block.labels).writeStatements(block.statements).writeComment(block.comment);
return this;
}
writeLineNumber(blockNumber) {
if (blockNumber) {
this.stream.write(Constants_1.Constants.NUMBER_TOKEN);
this.stream.write(blockNumber.toString());
}
return this;
}
writeLabels(labels) {
labels.forEach((label) => {
this.stream.write(label);
this.stream.write(Constants_1.Constants.COLON);
});
return this;
}
writeStatements(statements) {
if (statements.length) {
const statementWriter = new StatementWriter_1.StatementWriter(this.stream);
statements.forEach((statement) => statement.visit(statementWriter));
}
return this;
}
writeComment(comment) {
if (comment) {
this.stream.write(Constants_1.Constants.COMMENT_CHAR);
this.stream.write(comment);
}
}
}
exports.Writer = Writer;
//# sourceMappingURL=Writer.js.map