UNPKG

@scalenc/tmt-format

Version:

Library for handling TRUMPF TMT file format.

61 lines 2.5 kB
"use strict"; 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