@idfkit/core 0.2.0 → 0.3.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/conformance.d.ts +1 -1
- package/dist/conformance.d.ts.map +1 -1
- package/dist/conformance.js +1 -1
- package/dist/conformance.js.map +1 -1
- package/dist/document.d.ts +16 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +0 -0
- package/dist/document.js.map +1 -1
- package/dist/extensible.d.ts +5 -0
- package/dist/extensible.d.ts.map +1 -0
- package/dist/extensible.js +126 -0
- package/dist/extensible.js.map +1 -0
- package/dist/internal.d.ts +11 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +11 -0
- package/dist/internal.js.map +1 -1
- package/dist/object.d.ts +34 -2
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +43 -6
- package/dist/object.js.map +1 -1
- package/dist/parse/epjson.d.ts.map +1 -1
- package/dist/parse/epjson.js +23 -1
- package/dist/parse/epjson.js.map +1 -1
- package/dist/parse/idf.d.ts +16 -0
- package/dist/parse/idf.d.ts.map +1 -1
- package/dist/parse/idf.js +76 -4
- package/dist/parse/idf.js.map +1 -1
- package/dist/parse/lexer.d.ts.map +1 -1
- package/dist/parse/lexer.js +21 -3
- package/dist/parse/lexer.js.map +1 -1
- package/dist/preserve/source.d.ts +3 -0
- package/dist/preserve/source.d.ts.map +1 -0
- package/dist/preserve/source.js +60 -0
- package/dist/preserve/source.js.map +1 -0
- package/dist/preserve/write.d.ts +2 -0
- package/dist/preserve/write.d.ts.map +1 -0
- package/dist/preserve/write.js +85 -0
- package/dist/preserve/write.js.map +1 -0
- package/dist/syntax/layer.d.ts.map +1 -1
- package/dist/syntax/layer.js +30 -6
- package/dist/syntax/layer.js.map +1 -1
- package/dist/write/epjson.d.ts +19 -0
- package/dist/write/epjson.d.ts.map +1 -1
- package/dist/write/epjson.js +12 -0
- package/dist/write/epjson.js.map +1 -1
- package/dist/write/idf.d.ts +23 -7
- package/dist/write/idf.d.ts.map +1 -1
- package/dist/write/idf.js +51 -7
- package/dist/write/idf.js.map +1 -1
- package/package.json +4 -4
package/dist/write/idf.js
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
|
+
import { writePreserved } from '../preserve/write.js';
|
|
1
2
|
/**
|
|
2
3
|
* Serialize a document to IDF text.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* Two behaviours, chosen by how the document was read. A document read with `preserveFormatting`
|
|
6
|
+
* is written back per object: anything unchanged is reproduced from the characters it was read
|
|
7
|
+
* from, and everything between the objects is copied. A document read without it is formatted,
|
|
8
|
+
* which is what this writer has always done and still does by default.
|
|
9
|
+
*
|
|
10
|
+
* The caveat that used to be stated here applies to the formatting path alone: `3.0` comes back as
|
|
11
|
+
* `3` for a field the schema does not declare numeric. On the preserving path nothing is
|
|
12
|
+
* re-rendered, so nothing is lost.
|
|
11
13
|
*/
|
|
12
14
|
export function writeIdf(document, options = {}) {
|
|
15
|
+
const preserved = decidePreservation(document, options);
|
|
16
|
+
if (preserved !== undefined) {
|
|
17
|
+
return writePreserved(document, preserved, {
|
|
18
|
+
comments: options.comments ?? true,
|
|
19
|
+
commentColumn: options.commentColumn ?? 30,
|
|
20
|
+
indent: options.indent ?? ' ',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
13
23
|
const compressed = options.compressed ?? false;
|
|
14
24
|
// Compressed output has no comments by definition. Asking for both is not an error, because the
|
|
15
25
|
// narrower request is unambiguous: comments cannot survive a single-line object.
|
|
@@ -42,6 +52,40 @@ export function writeIdf(document, options = {}) {
|
|
|
42
52
|
}
|
|
43
53
|
return parts.join('\n');
|
|
44
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* The retained source to preserve from, or `undefined` to format.
|
|
57
|
+
*
|
|
58
|
+
* The branches below are the decision table, in order. Two are worth naming: preservation asked
|
|
59
|
+
* for on a document that has none is a quiet fallback rather than an error, and a reformatting
|
|
60
|
+
* control set WITHOUT asking for preservation is a request to format, so a control is never
|
|
61
|
+
* silently dropped in favour of the source.
|
|
62
|
+
*/
|
|
63
|
+
function decidePreservation(document, options) {
|
|
64
|
+
if (options.preserveFormatting === false)
|
|
65
|
+
return undefined;
|
|
66
|
+
// A different output FORM is a different artifact, so granting it is honest.
|
|
67
|
+
if (options.compressed === true || options.comments === false)
|
|
68
|
+
return undefined;
|
|
69
|
+
const source = document.preservedSource;
|
|
70
|
+
const reformatting = options.indent !== undefined ||
|
|
71
|
+
options.commentColumn !== undefined ||
|
|
72
|
+
options.ordering !== undefined ||
|
|
73
|
+
options.versionFirst !== undefined;
|
|
74
|
+
// A document read from the object notation carries JSON text and preserves on that format's
|
|
75
|
+
// all-or-nothing terms. Handing it to this walk would emit JSON under an IDF writer's name.
|
|
76
|
+
if (source === undefined || source.format !== 'idf')
|
|
77
|
+
return undefined;
|
|
78
|
+
if (reformatting) {
|
|
79
|
+
if (options.preserveFormatting === true) {
|
|
80
|
+
// Names the CLASS of controls, not the one the caller happened to set: a caller who set two
|
|
81
|
+
// learns about both.
|
|
82
|
+
throw new TypeError('preserveFormatting reproduces the original text, so it cannot also apply indent, ' +
|
|
83
|
+
'commentColumn, ordering or versionFirst. Pass one or the other.');
|
|
84
|
+
}
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
return source;
|
|
88
|
+
}
|
|
45
89
|
/** Serialize one object. */
|
|
46
90
|
export function writeObject(obj, options) {
|
|
47
91
|
const definition = obj.schema;
|
package/dist/write/idf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idf.js","sourceRoot":"","sources":["../../src/write/idf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"idf.js","sourceRoot":"","sources":["../../src/write/idf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idfkit/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-rc.1",
|
|
4
4
|
"description": "Fast EnergyPlus IDF and epJSON parsing and manipulation for JavaScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"node": ">=20"
|
|
43
43
|
},
|
|
44
44
|
"idfkit": {
|
|
45
|
-
"conformance": "conformance-2026.
|
|
46
|
-
"governance": "governance-2026.
|
|
45
|
+
"conformance": "conformance-2026.10",
|
|
46
|
+
"governance": "governance-2026.14"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@idfkit/schemas": "0.
|
|
49
|
+
"@idfkit/schemas": "0.3.0-rc.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@idfkit/types-v26-1": "*",
|