@scalenc/tmt-format
Version:
Library for handling TRUMPF TMT file format.
61 lines • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Writer = void 0;
const Constants_1 = require("./Constants");
class Writer {
static write(header, domains) {
return `${Writer.writeHeader(header)}${Writer.writeDomains(domains)}${Constants_1.Constants.EndOfFile}${Constants_1.Constants.NewLine}`;
}
static writeHeader(header) {
return [
`${Constants_1.Constants.Domain} ${Constants_1.Constants.Header} {`,
`"${header.name}"`,
`${header.date}`,
`${header.version}`,
`"${header.format}"`,
`${header.measuringSystem === undefined ? '' : `"${header.measuringSystem}"`}`,
`${header.application === undefined ? '' : `"${header.application}"`}`,
`};`,
``,
].join(Constants_1.Constants.NewLine);
}
static writeDomains(domains) {
return domains.map((d) => Writer.writeDomain(d)).join('');
}
static writeDomain(domain) {
return [
`${Constants_1.Constants.Domain} ${domain.name} {${Writer.writeValues(domain.values)}`,
`${Writer.writeSections(domain.sections)}${domain.endWhitespaces?.trimStart() ?? ''}};`,
``,
].join(Constants_1.Constants.NewLine);
}
static writeSections(sections) {
return sections.map((s) => Writer.writeSection(s)).join('');
}
static writeSection(section) {
return [`[${section.name}]${Writer.writeValues(section.values)}`, `${section.raw ?? ''}`].join(Constants_1.Constants.NewLine);
}
static writeValues(values) {
if (!values)
return '';
return values
.map((vs) => {
const s = `${vs.map((v, i) => `${v.whitespace ?? (i === 0 || v.isGeo || v.isRaw ? Constants_1.Constants.NewLine : ' ')}${Writer.writeValue(v)}`).join('')}`;
return vs[vs.length - 1]?.isGeo || vs[vs.length - 1]?.isRaw ? s.trimEnd() : `${s};`;
})
.join('');
}
static writeValue(value) {
if (value.isGeo || value.isRaw)
return value.value;
if (value.isPointer)
return value.value;
if (value.isFloat)
return value.value.toLocaleString('en-US', { useGrouping: false, minimumFractionDigits: 9 });
if (typeof value.value === 'number')
return `${value.value}`;
return `"${value.value}"`;
}
}
exports.Writer = Writer;
//# sourceMappingURL=Writer.js.map