woodml-parser 1.0.0
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/README.md +181 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +554 -0
- package/dist/cli.js.map +1 -0
- package/dist/cost.d.ts +94 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +340 -0
- package/dist/cost.js.map +1 -0
- package/dist/cost.test.d.ts +2 -0
- package/dist/cost.test.d.ts.map +1 -0
- package/dist/cost.test.js +241 -0
- package/dist/cost.test.js.map +1 -0
- package/dist/example.d.ts +6 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +136 -0
- package/dist/example.js.map +1 -0
- package/dist/formulas.d.ts +23 -0
- package/dist/formulas.d.ts.map +1 -0
- package/dist/formulas.js +442 -0
- package/dist/formulas.js.map +1 -0
- package/dist/formulas.test.d.ts +5 -0
- package/dist/formulas.test.d.ts.map +1 -0
- package/dist/formulas.test.js +360 -0
- package/dist/formulas.test.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/integration.test.d.ts +6 -0
- package/dist/integration.test.d.ts.map +1 -0
- package/dist/integration.test.js +271 -0
- package/dist/integration.test.js.map +1 -0
- package/dist/optimizer.d.ts +119 -0
- package/dist/optimizer.d.ts.map +1 -0
- package/dist/optimizer.js +423 -0
- package/dist/optimizer.js.map +1 -0
- package/dist/optimizer.test.d.ts +2 -0
- package/dist/optimizer.test.d.ts.map +1 -0
- package/dist/optimizer.test.js +225 -0
- package/dist/optimizer.test.js.map +1 -0
- package/dist/parser.d.ts +59 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +305 -0
- package/dist/parser.js.map +1 -0
- package/dist/parser.test.d.ts +5 -0
- package/dist/parser.test.d.ts.map +1 -0
- package/dist/parser.test.js +486 -0
- package/dist/parser.test.js.map +1 -0
- package/dist/pdf.d.ts +36 -0
- package/dist/pdf.d.ts.map +1 -0
- package/dist/pdf.js +316 -0
- package/dist/pdf.js.map +1 -0
- package/dist/svg.d.ts +73 -0
- package/dist/svg.d.ts.map +1 -0
- package/dist/svg.js +613 -0
- package/dist/svg.js.map +1 -0
- package/dist/svg.test.d.ts +5 -0
- package/dist/svg.test.d.ts.map +1 -0
- package/dist/svg.test.js +333 -0
- package/dist/svg.test.js.map +1 -0
- package/dist/templates.d.ts +126 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +448 -0
- package/dist/templates.js.map +1 -0
- package/dist/templates.test.d.ts +5 -0
- package/dist/templates.test.d.ts.map +1 -0
- package/dist/templates.test.js +630 -0
- package/dist/templates.test.js.map +1 -0
- package/dist/types.d.ts +250 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/units.d.ts +53 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +359 -0
- package/dist/units.js.map +1 -0
- package/dist/units.test.d.ts +5 -0
- package/dist/units.test.d.ts.map +1 -0
- package/dist/units.test.js +364 -0
- package/dist/units.test.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit Tests for WoodML Formulas Module
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const node_test_1 = require("node:test");
|
|
10
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
11
|
+
const formulas_1 = require("./formulas");
|
|
12
|
+
(0, node_test_1.describe)('createContext', () => {
|
|
13
|
+
(0, node_test_1.it)('should create context with numeric variables', () => {
|
|
14
|
+
const ctx = (0, formulas_1.createContext)({ quantity: 4, multiplier: 2 });
|
|
15
|
+
node_assert_1.default.strictEqual(ctx.variables.get('quantity'), 4);
|
|
16
|
+
node_assert_1.default.strictEqual(ctx.variables.get('multiplier'), 2);
|
|
17
|
+
});
|
|
18
|
+
(0, node_test_1.it)('should create context with dimension strings', () => {
|
|
19
|
+
const ctx = (0, formulas_1.createContext)({ width: '24"', height: '36"' });
|
|
20
|
+
const width = ctx.variables.get('width');
|
|
21
|
+
node_assert_1.default.strictEqual(width.value, 24);
|
|
22
|
+
node_assert_1.default.strictEqual(width.unit, 'imperial');
|
|
23
|
+
});
|
|
24
|
+
(0, node_test_1.it)('should use specified default unit', () => {
|
|
25
|
+
const ctx = (0, formulas_1.createContext)({ size: '100mm' }, 'metric');
|
|
26
|
+
node_assert_1.default.strictEqual(ctx.defaultUnit, 'metric');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
(0, node_test_1.describe)('evaluateFormula', () => {
|
|
30
|
+
(0, node_test_1.describe)('basic arithmetic', () => {
|
|
31
|
+
(0, node_test_1.it)('should evaluate addition', () => {
|
|
32
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
33
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('5 + 3', ctx), 8);
|
|
34
|
+
});
|
|
35
|
+
(0, node_test_1.it)('should evaluate subtraction', () => {
|
|
36
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
37
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('10 - 4', ctx), 6);
|
|
38
|
+
});
|
|
39
|
+
(0, node_test_1.it)('should evaluate multiplication', () => {
|
|
40
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
41
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('6 * 7', ctx), 42);
|
|
42
|
+
});
|
|
43
|
+
(0, node_test_1.it)('should evaluate division', () => {
|
|
44
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
45
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('20 / 4', ctx), 5);
|
|
46
|
+
});
|
|
47
|
+
(0, node_test_1.it)('should evaluate exponentiation', () => {
|
|
48
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
49
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('2 ^ 3', ctx), 8);
|
|
50
|
+
});
|
|
51
|
+
(0, node_test_1.it)('should throw on division by zero', () => {
|
|
52
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
53
|
+
node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('10 / 0', ctx), /Division by zero/);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
(0, node_test_1.describe)('operator precedence', () => {
|
|
57
|
+
(0, node_test_1.it)('should respect multiplication over addition', () => {
|
|
58
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
59
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('2 + 3 * 4', ctx), 14);
|
|
60
|
+
});
|
|
61
|
+
(0, node_test_1.it)('should respect parentheses', () => {
|
|
62
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
63
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('(2 + 3) * 4', ctx), 20);
|
|
64
|
+
});
|
|
65
|
+
(0, node_test_1.it)('should handle nested parentheses', () => {
|
|
66
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
67
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('((2 + 3) * (4 - 1))', ctx), 15);
|
|
68
|
+
});
|
|
69
|
+
(0, node_test_1.it)('should handle complex expressions', () => {
|
|
70
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
71
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('10 - 2 * 3 + 4 / 2', ctx), 6);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
(0, node_test_1.describe)('unary operators', () => {
|
|
75
|
+
(0, node_test_1.it)('should handle negative numbers', () => {
|
|
76
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
77
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('-5', ctx), -5);
|
|
78
|
+
});
|
|
79
|
+
(0, node_test_1.it)('should handle negative in expression', () => {
|
|
80
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
81
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('10 + -3', ctx), 7);
|
|
82
|
+
});
|
|
83
|
+
(0, node_test_1.it)('should handle double negative', () => {
|
|
84
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
85
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('--5', ctx), 5);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
(0, node_test_1.describe)('variables', () => {
|
|
89
|
+
(0, node_test_1.it)('should resolve numeric variables', () => {
|
|
90
|
+
const ctx = (0, formulas_1.createContext)({ x: 10, y: 5 });
|
|
91
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('$x + $y', ctx), 15);
|
|
92
|
+
});
|
|
93
|
+
(0, node_test_1.it)('should resolve dimension variables', () => {
|
|
94
|
+
const ctx = (0, formulas_1.createContext)({ width: '24"' });
|
|
95
|
+
const result = (0, formulas_1.evaluateFormula)('$width', ctx);
|
|
96
|
+
node_assert_1.default.strictEqual(result.value, 24);
|
|
97
|
+
});
|
|
98
|
+
(0, node_test_1.it)('should use dimensions in calculations', () => {
|
|
99
|
+
const ctx = (0, formulas_1.createContext)({ width: '24"', depth: '12"' });
|
|
100
|
+
const result = (0, formulas_1.evaluateFormula)('$width + $depth', ctx);
|
|
101
|
+
node_assert_1.default.strictEqual(result.value, 36);
|
|
102
|
+
});
|
|
103
|
+
(0, node_test_1.it)('should throw on undefined variable', () => {
|
|
104
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
105
|
+
node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('$undefined', ctx), /Undefined variable/);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
(0, node_test_1.describe)('dimensions in formulas', () => {
|
|
109
|
+
(0, node_test_1.it)('should parse dimensions in expressions', () => {
|
|
110
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
111
|
+
const result = (0, formulas_1.evaluateFormula)('24" + 12"', ctx);
|
|
112
|
+
node_assert_1.default.strictEqual(result.value, 36);
|
|
113
|
+
});
|
|
114
|
+
(0, node_test_1.it)('should handle mixed units', () => {
|
|
115
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
116
|
+
const result = (0, formulas_1.evaluateFormula)('24" + 25.4mm', ctx);
|
|
117
|
+
node_assert_1.default.strictEqual(result.value, 25); // 24 + 1 inch
|
|
118
|
+
});
|
|
119
|
+
(0, node_test_1.it)('should multiply dimension by number', () => {
|
|
120
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
121
|
+
const result = (0, formulas_1.evaluateFormula)('12" * 2', ctx);
|
|
122
|
+
node_assert_1.default.strictEqual(result.value, 24);
|
|
123
|
+
});
|
|
124
|
+
(0, node_test_1.it)('should divide dimension by number', () => {
|
|
125
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
126
|
+
const result = (0, formulas_1.evaluateFormula)('24" / 2', ctx);
|
|
127
|
+
node_assert_1.default.strictEqual(result.value, 12);
|
|
128
|
+
});
|
|
129
|
+
(0, node_test_1.it)('should return number when multiplying two dimensions', () => {
|
|
130
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
131
|
+
const result = (0, formulas_1.evaluateFormula)('12" * 12"', ctx);
|
|
132
|
+
node_assert_1.default.strictEqual(typeof result, 'number');
|
|
133
|
+
node_assert_1.default.strictEqual(result, 144);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
(0, node_test_1.describe)('math functions', () => {
|
|
137
|
+
(0, node_test_1.it)('should evaluate min', () => {
|
|
138
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
139
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('min(5, 3, 8)', ctx), 3);
|
|
140
|
+
});
|
|
141
|
+
(0, node_test_1.it)('should evaluate max', () => {
|
|
142
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
143
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('max(5, 3, 8)', ctx), 8);
|
|
144
|
+
});
|
|
145
|
+
(0, node_test_1.it)('should evaluate abs', () => {
|
|
146
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
147
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('abs(-5)', ctx), 5);
|
|
148
|
+
});
|
|
149
|
+
(0, node_test_1.it)('should evaluate sqrt', () => {
|
|
150
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
151
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('sqrt(16)', ctx), 4);
|
|
152
|
+
});
|
|
153
|
+
(0, node_test_1.it)('should evaluate round', () => {
|
|
154
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
155
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('round(3.7)', ctx), 4);
|
|
156
|
+
});
|
|
157
|
+
(0, node_test_1.it)('should evaluate round with precision', () => {
|
|
158
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
159
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('round(3.14159, 0.01)', ctx), 3.14);
|
|
160
|
+
});
|
|
161
|
+
(0, node_test_1.it)('should evaluate floor', () => {
|
|
162
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
163
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('floor(3.9)', ctx), 3);
|
|
164
|
+
});
|
|
165
|
+
(0, node_test_1.it)('should evaluate ceil', () => {
|
|
166
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
167
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('ceil(3.1)', ctx), 4);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
(0, node_test_1.describe)('trigonometric functions', () => {
|
|
171
|
+
(0, node_test_1.it)('should evaluate sin (degrees)', () => {
|
|
172
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
173
|
+
const result = (0, formulas_1.evaluateFormula)('sin(90)', ctx);
|
|
174
|
+
node_assert_1.default.ok(Math.abs(result - 1) < 0.0001);
|
|
175
|
+
});
|
|
176
|
+
(0, node_test_1.it)('should evaluate cos (degrees)', () => {
|
|
177
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
178
|
+
const result = (0, formulas_1.evaluateFormula)('cos(0)', ctx);
|
|
179
|
+
node_assert_1.default.ok(Math.abs(result - 1) < 0.0001);
|
|
180
|
+
});
|
|
181
|
+
(0, node_test_1.it)('should evaluate tan (degrees)', () => {
|
|
182
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
183
|
+
const result = (0, formulas_1.evaluateFormula)('tan(45)', ctx);
|
|
184
|
+
node_assert_1.default.ok(Math.abs(result - 1) < 0.0001);
|
|
185
|
+
});
|
|
186
|
+
(0, node_test_1.it)('should evaluate asin (returns degrees)', () => {
|
|
187
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
188
|
+
const result = (0, formulas_1.evaluateFormula)('asin(1)', ctx);
|
|
189
|
+
node_assert_1.default.ok(Math.abs(result - 90) < 0.0001);
|
|
190
|
+
});
|
|
191
|
+
(0, node_test_1.it)('should evaluate acos (returns degrees)', () => {
|
|
192
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
193
|
+
const result = (0, formulas_1.evaluateFormula)('acos(1)', ctx);
|
|
194
|
+
node_assert_1.default.ok(Math.abs(result) < 0.0001);
|
|
195
|
+
});
|
|
196
|
+
(0, node_test_1.it)('should evaluate atan (returns degrees)', () => {
|
|
197
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
198
|
+
const result = (0, formulas_1.evaluateFormula)('atan(1)', ctx);
|
|
199
|
+
node_assert_1.default.ok(Math.abs(result - 45) < 0.0001);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
(0, node_test_1.describe)('woodworking functions', () => {
|
|
203
|
+
(0, node_test_1.it)('should calculate board_feet', () => {
|
|
204
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
205
|
+
// 96" x 6" x 1" = 4 board feet
|
|
206
|
+
const result = (0, formulas_1.evaluateFormula)('board_feet(96, 6, 1)', ctx);
|
|
207
|
+
node_assert_1.default.strictEqual(result, 4);
|
|
208
|
+
});
|
|
209
|
+
(0, node_test_1.it)('should calculate square_feet', () => {
|
|
210
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
211
|
+
// 12" x 12" = 1 sq ft
|
|
212
|
+
const result = (0, formulas_1.evaluateFormula)('square_feet(12, 12)', ctx);
|
|
213
|
+
node_assert_1.default.strictEqual(result, 1);
|
|
214
|
+
});
|
|
215
|
+
(0, node_test_1.it)('should calculate miter_angle for hexagon', () => {
|
|
216
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
217
|
+
// 6 sides = 60 degree miter
|
|
218
|
+
const result = (0, formulas_1.evaluateFormula)('miter_angle(6)', ctx);
|
|
219
|
+
node_assert_1.default.strictEqual(result, 60);
|
|
220
|
+
});
|
|
221
|
+
(0, node_test_1.it)('should calculate miter_angle for octagon', () => {
|
|
222
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
223
|
+
// 8 sides = 67.5 degree miter
|
|
224
|
+
const result = (0, formulas_1.evaluateFormula)('miter_angle(8)', ctx);
|
|
225
|
+
node_assert_1.default.strictEqual(result, 67.5);
|
|
226
|
+
});
|
|
227
|
+
(0, node_test_1.it)('should calculate diagonal', () => {
|
|
228
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
229
|
+
// 3-4-5 triangle
|
|
230
|
+
const result = (0, formulas_1.evaluateFormula)('diagonal(3, 4)', ctx);
|
|
231
|
+
node_assert_1.default.strictEqual(result.value, 5);
|
|
232
|
+
});
|
|
233
|
+
(0, node_test_1.it)('should return golden_ratio', () => {
|
|
234
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
235
|
+
const result = (0, formulas_1.evaluateFormula)('golden_ratio()', ctx);
|
|
236
|
+
node_assert_1.default.ok(Math.abs(result - 1.618033988749895) < 0.0001);
|
|
237
|
+
});
|
|
238
|
+
(0, node_test_1.it)('should calculate fibonacci', () => {
|
|
239
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
240
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(0)', ctx), 0);
|
|
241
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(1)', ctx), 1);
|
|
242
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(5)', ctx), 5);
|
|
243
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('fibonacci(10)', ctx), 55);
|
|
244
|
+
});
|
|
245
|
+
(0, node_test_1.it)('should calculate circle_circumference', () => {
|
|
246
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
247
|
+
const result = (0, formulas_1.evaluateFormula)('circle_circumference(10)', ctx);
|
|
248
|
+
node_assert_1.default.ok(Math.abs(result.value - 31.4159) < 0.001);
|
|
249
|
+
});
|
|
250
|
+
(0, node_test_1.it)('should calculate circle_area', () => {
|
|
251
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
252
|
+
// Diameter 10, radius 5, area = pi * 25 = 78.54
|
|
253
|
+
const result = (0, formulas_1.evaluateFormula)('circle_area(10)', ctx);
|
|
254
|
+
node_assert_1.default.ok(Math.abs(result - 78.5398) < 0.001);
|
|
255
|
+
});
|
|
256
|
+
(0, node_test_1.it)('should calculate circle_diameter from circumference', () => {
|
|
257
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
258
|
+
const result = (0, formulas_1.evaluateFormula)('circle_diameter(31.4159)', ctx);
|
|
259
|
+
node_assert_1.default.ok(Math.abs(result.value - 10) < 0.001);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
(0, node_test_1.describe)('nested function calls', () => {
|
|
263
|
+
(0, node_test_1.it)('should handle nested functions', () => {
|
|
264
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
265
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('max(min(5, 10), 3)', ctx), 5);
|
|
266
|
+
});
|
|
267
|
+
(0, node_test_1.it)('should handle functions in expressions', () => {
|
|
268
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
269
|
+
node_assert_1.default.strictEqual((0, formulas_1.evaluateFormula)('sqrt(16) + 2', ctx), 6);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
(0, node_test_1.describe)('error handling', () => {
|
|
273
|
+
(0, node_test_1.it)('should throw on unknown function', () => {
|
|
274
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
275
|
+
// 'unknown' isn't recognized as a function token, so it fails at tokenization
|
|
276
|
+
node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('unknown(5)', ctx), /Unexpected character/);
|
|
277
|
+
});
|
|
278
|
+
(0, node_test_1.it)('should throw on unexpected token', () => {
|
|
279
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
280
|
+
node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('5 @ 3', ctx), /Unexpected character/);
|
|
281
|
+
});
|
|
282
|
+
(0, node_test_1.it)('should throw on unclosed parenthesis', () => {
|
|
283
|
+
const ctx = (0, formulas_1.createContext)({});
|
|
284
|
+
node_assert_1.default.throws(() => (0, formulas_1.evaluateFormula)('(5 + 3', ctx), /Expected closing parenthesis/);
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
(0, node_test_1.describe)('resolveFormulas', () => {
|
|
289
|
+
(0, node_test_1.it)('should resolve simple vars', () => {
|
|
290
|
+
const formulas = {
|
|
291
|
+
vars: {
|
|
292
|
+
width: '24"',
|
|
293
|
+
height: '36"',
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
const resolved = (0, formulas_1.resolveFormulas)(formulas);
|
|
297
|
+
const width = resolved.get('width');
|
|
298
|
+
const height = resolved.get('height');
|
|
299
|
+
node_assert_1.default.strictEqual(width.value, 24);
|
|
300
|
+
node_assert_1.default.strictEqual(height.value, 36);
|
|
301
|
+
});
|
|
302
|
+
(0, node_test_1.it)('should resolve computed values', () => {
|
|
303
|
+
const formulas = {
|
|
304
|
+
vars: {
|
|
305
|
+
width: '24"',
|
|
306
|
+
},
|
|
307
|
+
computed: {
|
|
308
|
+
double_width: '$width * 2',
|
|
309
|
+
},
|
|
310
|
+
};
|
|
311
|
+
const resolved = (0, formulas_1.resolveFormulas)(formulas);
|
|
312
|
+
const doubleWidth = resolved.get('double_width');
|
|
313
|
+
node_assert_1.default.strictEqual(doubleWidth.value, 48);
|
|
314
|
+
});
|
|
315
|
+
(0, node_test_1.it)('should resolve dependent computed values', () => {
|
|
316
|
+
const formulas = {
|
|
317
|
+
vars: {
|
|
318
|
+
base: '12"',
|
|
319
|
+
},
|
|
320
|
+
computed: {
|
|
321
|
+
double: '$base * 2',
|
|
322
|
+
quadruple: '$double * 2',
|
|
323
|
+
},
|
|
324
|
+
};
|
|
325
|
+
const resolved = (0, formulas_1.resolveFormulas)(formulas);
|
|
326
|
+
const quadruple = resolved.get('quadruple');
|
|
327
|
+
node_assert_1.default.strictEqual(quadruple.value, 48);
|
|
328
|
+
});
|
|
329
|
+
(0, node_test_1.it)('should handle numeric vars', () => {
|
|
330
|
+
const formulas = {
|
|
331
|
+
vars: {
|
|
332
|
+
quantity: '4',
|
|
333
|
+
multiplier: '2.5',
|
|
334
|
+
},
|
|
335
|
+
};
|
|
336
|
+
const resolved = (0, formulas_1.resolveFormulas)(formulas);
|
|
337
|
+
node_assert_1.default.strictEqual(resolved.get('quantity'), 4);
|
|
338
|
+
node_assert_1.default.strictEqual(resolved.get('multiplier'), 2.5);
|
|
339
|
+
});
|
|
340
|
+
(0, node_test_1.it)('should throw on circular references', () => {
|
|
341
|
+
const formulas = {
|
|
342
|
+
computed: {
|
|
343
|
+
a: '$b + 1',
|
|
344
|
+
b: '$a + 1',
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
node_assert_1.default.throws(() => (0, formulas_1.resolveFormulas)(formulas), /Circular reference/);
|
|
348
|
+
});
|
|
349
|
+
(0, node_test_1.it)('should use default unit system', () => {
|
|
350
|
+
const formulas = {
|
|
351
|
+
vars: {
|
|
352
|
+
size: '100mm',
|
|
353
|
+
},
|
|
354
|
+
};
|
|
355
|
+
const resolved = (0, formulas_1.resolveFormulas)(formulas, 'metric');
|
|
356
|
+
const size = resolved.get('size');
|
|
357
|
+
node_assert_1.default.strictEqual(size.unit, 'metric');
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
//# sourceMappingURL=formulas.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formulas.test.js","sourceRoot":"","sources":["../src/formulas.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WoodML TypeScript Parser
|
|
3
|
+
* Reference implementation for parsing WoodML files
|
|
4
|
+
*/
|
|
5
|
+
export * from './types';
|
|
6
|
+
export { parseDimension, toInches, toMillimeters, convertTo, formatImperial, formatMetric, formatDimension, decimalToFraction, parseDimensionalLumber, isVariableReference, extractVariableName, } from './units';
|
|
7
|
+
export { createContext, evaluateFormula, resolveFormulas, FormulaValue, FormulaContext, } from './formulas';
|
|
8
|
+
export { WoodMLParser, validateDocument, calculateBoardFeet, generateCutList, formatCutList, ValidationError, CutListItem, } from './parser';
|
|
9
|
+
export { TemplateParser, createTemplateParser, TemplateDefinition, TemplateParam, TemplatePart, TemplateInstance, InstantiatedTemplate, } from './templates';
|
|
10
|
+
export { SVGGenerator, generateSVG, generatePartSVG, SVGOptions, } from './svg';
|
|
11
|
+
export { estimateCost, formatCostEstimate, CostEstimate, CostEstimateOptions, LumberPricing, HardwarePricing, LumberCostItem, HardwareCostItem, FinishingCostItem, DEFAULT_LUMBER_PRICES, DEFAULT_HARDWARE_PRICES, } from './cost';
|
|
12
|
+
export { optimizeCutList, formatOptimizationResult, OptimizationOptions, OptimizationResult, OptimizedSheet, OptimizedBoard, PlacedPart, STANDARD_SHEET_SIZES, STANDARD_BOARD_LENGTHS, } from './optimizer';
|
|
13
|
+
export { generateCutSheetPDF, generateDiagramPDF, PDFOptions, PAGE_SIZES, } from './pdf';
|
|
14
|
+
import { WoodMLDocument, ResolvedDocument } from './types';
|
|
15
|
+
/**
|
|
16
|
+
* Parse a WoodML string
|
|
17
|
+
*/
|
|
18
|
+
export declare function parse(source: string): WoodMLDocument;
|
|
19
|
+
/**
|
|
20
|
+
* Parse and resolve a WoodML string
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseAndResolve(source: string): ResolvedDocument;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,UAAU,GACX,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAGpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAGhE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WoodML TypeScript Parser
|
|
4
|
+
* Reference implementation for parsing WoodML files
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.PAGE_SIZES = exports.generateDiagramPDF = exports.generateCutSheetPDF = exports.STANDARD_BOARD_LENGTHS = exports.STANDARD_SHEET_SIZES = exports.formatOptimizationResult = exports.optimizeCutList = exports.DEFAULT_HARDWARE_PRICES = exports.DEFAULT_LUMBER_PRICES = exports.formatCostEstimate = exports.estimateCost = exports.generatePartSVG = exports.generateSVG = exports.SVGGenerator = exports.createTemplateParser = exports.TemplateParser = exports.formatCutList = exports.generateCutList = exports.calculateBoardFeet = exports.validateDocument = exports.WoodMLParser = exports.resolveFormulas = exports.evaluateFormula = exports.createContext = exports.extractVariableName = exports.isVariableReference = exports.parseDimensionalLumber = exports.decimalToFraction = exports.formatDimension = exports.formatMetric = exports.formatImperial = exports.convertTo = exports.toMillimeters = exports.toInches = exports.parseDimension = void 0;
|
|
22
|
+
exports.parse = parse;
|
|
23
|
+
exports.parseAndResolve = parseAndResolve;
|
|
24
|
+
// Re-export all types
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
// Re-export unit functions
|
|
27
|
+
var units_1 = require("./units");
|
|
28
|
+
Object.defineProperty(exports, "parseDimension", { enumerable: true, get: function () { return units_1.parseDimension; } });
|
|
29
|
+
Object.defineProperty(exports, "toInches", { enumerable: true, get: function () { return units_1.toInches; } });
|
|
30
|
+
Object.defineProperty(exports, "toMillimeters", { enumerable: true, get: function () { return units_1.toMillimeters; } });
|
|
31
|
+
Object.defineProperty(exports, "convertTo", { enumerable: true, get: function () { return units_1.convertTo; } });
|
|
32
|
+
Object.defineProperty(exports, "formatImperial", { enumerable: true, get: function () { return units_1.formatImperial; } });
|
|
33
|
+
Object.defineProperty(exports, "formatMetric", { enumerable: true, get: function () { return units_1.formatMetric; } });
|
|
34
|
+
Object.defineProperty(exports, "formatDimension", { enumerable: true, get: function () { return units_1.formatDimension; } });
|
|
35
|
+
Object.defineProperty(exports, "decimalToFraction", { enumerable: true, get: function () { return units_1.decimalToFraction; } });
|
|
36
|
+
Object.defineProperty(exports, "parseDimensionalLumber", { enumerable: true, get: function () { return units_1.parseDimensionalLumber; } });
|
|
37
|
+
Object.defineProperty(exports, "isVariableReference", { enumerable: true, get: function () { return units_1.isVariableReference; } });
|
|
38
|
+
Object.defineProperty(exports, "extractVariableName", { enumerable: true, get: function () { return units_1.extractVariableName; } });
|
|
39
|
+
// Re-export formula functions
|
|
40
|
+
var formulas_1 = require("./formulas");
|
|
41
|
+
Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return formulas_1.createContext; } });
|
|
42
|
+
Object.defineProperty(exports, "evaluateFormula", { enumerable: true, get: function () { return formulas_1.evaluateFormula; } });
|
|
43
|
+
Object.defineProperty(exports, "resolveFormulas", { enumerable: true, get: function () { return formulas_1.resolveFormulas; } });
|
|
44
|
+
// Re-export parser
|
|
45
|
+
var parser_1 = require("./parser");
|
|
46
|
+
Object.defineProperty(exports, "WoodMLParser", { enumerable: true, get: function () { return parser_1.WoodMLParser; } });
|
|
47
|
+
Object.defineProperty(exports, "validateDocument", { enumerable: true, get: function () { return parser_1.validateDocument; } });
|
|
48
|
+
Object.defineProperty(exports, "calculateBoardFeet", { enumerable: true, get: function () { return parser_1.calculateBoardFeet; } });
|
|
49
|
+
Object.defineProperty(exports, "generateCutList", { enumerable: true, get: function () { return parser_1.generateCutList; } });
|
|
50
|
+
Object.defineProperty(exports, "formatCutList", { enumerable: true, get: function () { return parser_1.formatCutList; } });
|
|
51
|
+
// Re-export templates
|
|
52
|
+
var templates_1 = require("./templates");
|
|
53
|
+
Object.defineProperty(exports, "TemplateParser", { enumerable: true, get: function () { return templates_1.TemplateParser; } });
|
|
54
|
+
Object.defineProperty(exports, "createTemplateParser", { enumerable: true, get: function () { return templates_1.createTemplateParser; } });
|
|
55
|
+
// Re-export SVG generation
|
|
56
|
+
var svg_1 = require("./svg");
|
|
57
|
+
Object.defineProperty(exports, "SVGGenerator", { enumerable: true, get: function () { return svg_1.SVGGenerator; } });
|
|
58
|
+
Object.defineProperty(exports, "generateSVG", { enumerable: true, get: function () { return svg_1.generateSVG; } });
|
|
59
|
+
Object.defineProperty(exports, "generatePartSVG", { enumerable: true, get: function () { return svg_1.generatePartSVG; } });
|
|
60
|
+
// Re-export cost estimation
|
|
61
|
+
var cost_1 = require("./cost");
|
|
62
|
+
Object.defineProperty(exports, "estimateCost", { enumerable: true, get: function () { return cost_1.estimateCost; } });
|
|
63
|
+
Object.defineProperty(exports, "formatCostEstimate", { enumerable: true, get: function () { return cost_1.formatCostEstimate; } });
|
|
64
|
+
Object.defineProperty(exports, "DEFAULT_LUMBER_PRICES", { enumerable: true, get: function () { return cost_1.DEFAULT_LUMBER_PRICES; } });
|
|
65
|
+
Object.defineProperty(exports, "DEFAULT_HARDWARE_PRICES", { enumerable: true, get: function () { return cost_1.DEFAULT_HARDWARE_PRICES; } });
|
|
66
|
+
// Re-export cut list optimization
|
|
67
|
+
var optimizer_1 = require("./optimizer");
|
|
68
|
+
Object.defineProperty(exports, "optimizeCutList", { enumerable: true, get: function () { return optimizer_1.optimizeCutList; } });
|
|
69
|
+
Object.defineProperty(exports, "formatOptimizationResult", { enumerable: true, get: function () { return optimizer_1.formatOptimizationResult; } });
|
|
70
|
+
Object.defineProperty(exports, "STANDARD_SHEET_SIZES", { enumerable: true, get: function () { return optimizer_1.STANDARD_SHEET_SIZES; } });
|
|
71
|
+
Object.defineProperty(exports, "STANDARD_BOARD_LENGTHS", { enumerable: true, get: function () { return optimizer_1.STANDARD_BOARD_LENGTHS; } });
|
|
72
|
+
// Re-export PDF generation
|
|
73
|
+
var pdf_1 = require("./pdf");
|
|
74
|
+
Object.defineProperty(exports, "generateCutSheetPDF", { enumerable: true, get: function () { return pdf_1.generateCutSheetPDF; } });
|
|
75
|
+
Object.defineProperty(exports, "generateDiagramPDF", { enumerable: true, get: function () { return pdf_1.generateDiagramPDF; } });
|
|
76
|
+
Object.defineProperty(exports, "PAGE_SIZES", { enumerable: true, get: function () { return pdf_1.PAGE_SIZES; } });
|
|
77
|
+
// Convenience function
|
|
78
|
+
const parser_2 = require("./parser");
|
|
79
|
+
/**
|
|
80
|
+
* Parse a WoodML string
|
|
81
|
+
*/
|
|
82
|
+
function parse(source) {
|
|
83
|
+
const parser = new parser_2.WoodMLParser();
|
|
84
|
+
return parser.parse(source);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Parse and resolve a WoodML string
|
|
88
|
+
*/
|
|
89
|
+
function parseAndResolve(source) {
|
|
90
|
+
const parser = new parser_2.WoodMLParser();
|
|
91
|
+
return parser.parseAndResolve(source);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAsGH,sBAGC;AAKD,0CAGC;AA/GD,sBAAsB;AACtB,0CAAwB;AAExB,2BAA2B;AAC3B,iCAYiB;AAXf,uGAAA,cAAc,OAAA;AACd,iGAAA,QAAQ,OAAA;AACR,sGAAA,aAAa,OAAA;AACb,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,0GAAA,iBAAiB,OAAA;AACjB,+GAAA,sBAAsB,OAAA;AACtB,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AAGrB,8BAA8B;AAC9B,uCAMoB;AALlB,yGAAA,aAAa,OAAA;AACb,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AAKjB,mBAAmB;AACnB,mCAQkB;AAPhB,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,yGAAA,eAAe,OAAA;AACf,uGAAA,aAAa,OAAA;AAKf,sBAAsB;AACtB,yCAQqB;AAPnB,2GAAA,cAAc,OAAA;AACd,iHAAA,oBAAoB,OAAA;AAQtB,2BAA2B;AAC3B,6BAKe;AAJb,mGAAA,YAAY,OAAA;AACZ,kGAAA,WAAW,OAAA;AACX,sGAAA,eAAe,OAAA;AAIjB,4BAA4B;AAC5B,+BAYgB;AAXd,oGAAA,YAAY,OAAA;AACZ,0GAAA,kBAAkB,OAAA;AAQlB,6GAAA,qBAAqB,OAAA;AACrB,+GAAA,uBAAuB,OAAA;AAGzB,kCAAkC;AAClC,yCAUqB;AATnB,4GAAA,eAAe,OAAA;AACf,qHAAA,wBAAwB,OAAA;AAMxB,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AAGxB,2BAA2B;AAC3B,6BAKe;AAJb,0GAAA,mBAAmB,OAAA;AACnB,yGAAA,kBAAkB,OAAA;AAElB,iGAAA,UAAU,OAAA;AAGZ,uBAAuB;AACvB,qCAAwC;AAGxC;;GAEG;AACH,SAAgB,KAAK,CAAC,MAAc;IAClC,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../src/integration.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|