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,448 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WoodML Template System
|
|
4
|
+
* Handles parametric template parsing and instantiation
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TemplateParser = void 0;
|
|
8
|
+
exports.parseTemplate = parseTemplate;
|
|
9
|
+
exports.createTemplateParser = createTemplateParser;
|
|
10
|
+
const units_1 = require("./units");
|
|
11
|
+
const formulas_1 = require("./formulas");
|
|
12
|
+
// ============================================
|
|
13
|
+
// TEMPLATE PARSER
|
|
14
|
+
// ============================================
|
|
15
|
+
class TemplateParser {
|
|
16
|
+
templates = new Map();
|
|
17
|
+
defaultUnit;
|
|
18
|
+
constructor(defaultUnit = 'imperial') {
|
|
19
|
+
this.defaultUnit = defaultUnit;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Register a template definition
|
|
23
|
+
*/
|
|
24
|
+
registerTemplate(template) {
|
|
25
|
+
this.templates.set(template.name, template);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parse a template definition from raw data
|
|
29
|
+
*/
|
|
30
|
+
parseTemplateDefinition(data) {
|
|
31
|
+
const template = data.template;
|
|
32
|
+
if (!template) {
|
|
33
|
+
throw new Error('Missing template definition');
|
|
34
|
+
}
|
|
35
|
+
const name = template.name;
|
|
36
|
+
if (!name) {
|
|
37
|
+
throw new Error('Template missing required "name" field');
|
|
38
|
+
}
|
|
39
|
+
const params = template.params;
|
|
40
|
+
if (!params) {
|
|
41
|
+
throw new Error('Template missing required "params" field');
|
|
42
|
+
}
|
|
43
|
+
// Parse params
|
|
44
|
+
const parsedParams = {};
|
|
45
|
+
for (const [key, value] of Object.entries(params)) {
|
|
46
|
+
if (typeof value === 'string') {
|
|
47
|
+
// Simple param type
|
|
48
|
+
parsedParams[key] = value.replace('?', '');
|
|
49
|
+
if (value.endsWith('?')) {
|
|
50
|
+
parsedParams[key] = {
|
|
51
|
+
type: value.replace('?', ''),
|
|
52
|
+
optional: true,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (typeof value === 'object' && value !== null) {
|
|
57
|
+
// Complex param with constraints
|
|
58
|
+
const paramDef = value;
|
|
59
|
+
parsedParams[key] = {
|
|
60
|
+
type: paramDef.type,
|
|
61
|
+
description: paramDef.description,
|
|
62
|
+
optional: !!paramDef.optional,
|
|
63
|
+
min: paramDef.min,
|
|
64
|
+
max: paramDef.max,
|
|
65
|
+
values: paramDef.values,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Parse parts
|
|
70
|
+
const parts = (template.parts || []).map((p) => ({
|
|
71
|
+
id: p.id,
|
|
72
|
+
name: p.name,
|
|
73
|
+
material: p.material,
|
|
74
|
+
dimensions: p.dimensions,
|
|
75
|
+
quantity: p.quantity,
|
|
76
|
+
grain: p.grain,
|
|
77
|
+
notes: p.notes,
|
|
78
|
+
repeat: p.repeat,
|
|
79
|
+
as: p.as,
|
|
80
|
+
use: p.use,
|
|
81
|
+
params: p.params,
|
|
82
|
+
}));
|
|
83
|
+
// Parse joinery
|
|
84
|
+
const joinery = (template.joinery || []).map((j) => ({
|
|
85
|
+
type: j.type,
|
|
86
|
+
parts: j.parts,
|
|
87
|
+
housing: j.housing,
|
|
88
|
+
insert: j.insert,
|
|
89
|
+
tails: j.tails,
|
|
90
|
+
pins: j.pins,
|
|
91
|
+
ratio: j.ratio,
|
|
92
|
+
depth: j.depth,
|
|
93
|
+
position: j.position,
|
|
94
|
+
}));
|
|
95
|
+
return {
|
|
96
|
+
name,
|
|
97
|
+
description: template.description,
|
|
98
|
+
version: template.version,
|
|
99
|
+
author: template.author,
|
|
100
|
+
params: parsedParams,
|
|
101
|
+
defaults: template.defaults,
|
|
102
|
+
computed: template.computed,
|
|
103
|
+
parts,
|
|
104
|
+
joinery,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validate template instance parameters
|
|
109
|
+
*/
|
|
110
|
+
validateParams(template, providedParams) {
|
|
111
|
+
const errors = [];
|
|
112
|
+
for (const [name, paramDef] of Object.entries(template.params)) {
|
|
113
|
+
const isOptional = typeof paramDef === 'object' && paramDef.optional;
|
|
114
|
+
const hasDefault = template.defaults && name in template.defaults;
|
|
115
|
+
const provided = name in providedParams;
|
|
116
|
+
if (!provided && !isOptional && !hasDefault) {
|
|
117
|
+
errors.push(`Missing required parameter: ${name}`);
|
|
118
|
+
}
|
|
119
|
+
if (provided) {
|
|
120
|
+
const value = providedParams[name];
|
|
121
|
+
const type = typeof paramDef === 'string' ? paramDef : paramDef.type;
|
|
122
|
+
// Type validation
|
|
123
|
+
if (type === 'dimension' && typeof value === 'string') {
|
|
124
|
+
try {
|
|
125
|
+
(0, units_1.parseDimension)(value, this.defaultUnit);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
errors.push(`Invalid dimension for parameter "${name}": ${value}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (type === 'number' && typeof value !== 'number') {
|
|
132
|
+
errors.push(`Parameter "${name}" must be a number`);
|
|
133
|
+
}
|
|
134
|
+
if (type === 'boolean' && typeof value !== 'boolean') {
|
|
135
|
+
errors.push(`Parameter "${name}" must be a boolean`);
|
|
136
|
+
}
|
|
137
|
+
if (type === 'enum' && typeof paramDef === 'object' && paramDef.values) {
|
|
138
|
+
if (!paramDef.values.includes(value)) {
|
|
139
|
+
errors.push(`Parameter "${name}" must be one of: ${paramDef.values.join(', ')}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Constraint validation for dimension/number
|
|
143
|
+
if (typeof paramDef === 'object') {
|
|
144
|
+
const numericValue = this.getNumericValue(value, type);
|
|
145
|
+
if (paramDef.min !== undefined && numericValue !== null) {
|
|
146
|
+
const minValue = this.getNumericValue(paramDef.min, type);
|
|
147
|
+
if (minValue !== null && numericValue < minValue) {
|
|
148
|
+
errors.push(`Parameter "${name}" must be at least ${paramDef.min}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (paramDef.max !== undefined && numericValue !== null) {
|
|
152
|
+
const maxValue = this.getNumericValue(paramDef.max, type);
|
|
153
|
+
if (maxValue !== null && numericValue > maxValue) {
|
|
154
|
+
errors.push(`Parameter "${name}" must be at most ${paramDef.max}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return errors;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Instantiate a template with given parameters
|
|
164
|
+
*/
|
|
165
|
+
instantiate(templateName, instanceId, params, materials = {}) {
|
|
166
|
+
const template = this.templates.get(templateName);
|
|
167
|
+
if (!template) {
|
|
168
|
+
throw new Error(`Template not found: ${templateName}`);
|
|
169
|
+
}
|
|
170
|
+
// Validate parameters
|
|
171
|
+
const errors = this.validateParams(template, params);
|
|
172
|
+
if (errors.length > 0) {
|
|
173
|
+
throw new Error(`Template validation failed:\n${errors.join('\n')}`);
|
|
174
|
+
}
|
|
175
|
+
// Merge with defaults
|
|
176
|
+
const mergedParams = {
|
|
177
|
+
...template.defaults,
|
|
178
|
+
...params,
|
|
179
|
+
};
|
|
180
|
+
// Create formula context for parameter substitution
|
|
181
|
+
const contextVars = {};
|
|
182
|
+
for (const [key, value] of Object.entries(mergedParams)) {
|
|
183
|
+
if (typeof value === 'boolean') {
|
|
184
|
+
contextVars[key] = value ? 1 : 0;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
contextVars[key] = value;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Add computed values
|
|
191
|
+
if (template.computed) {
|
|
192
|
+
for (const [key, formula] of Object.entries(template.computed)) {
|
|
193
|
+
contextVars[key] = formula;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const context = (0, formulas_1.createContext)(contextVars, this.defaultUnit);
|
|
197
|
+
// Process template parts
|
|
198
|
+
const parts = [];
|
|
199
|
+
const joinery = [];
|
|
200
|
+
for (const templatePart of template.parts) {
|
|
201
|
+
// Handle repeat
|
|
202
|
+
if (templatePart.repeat !== undefined) {
|
|
203
|
+
const repeatCount = typeof templatePart.repeat === 'number'
|
|
204
|
+
? templatePart.repeat
|
|
205
|
+
: this.evaluateNumber(templatePart.repeat, context);
|
|
206
|
+
for (let i = 0; i < repeatCount; i++) {
|
|
207
|
+
// Create context with loop variable
|
|
208
|
+
const loopContext = (0, formulas_1.createContext)({
|
|
209
|
+
...contextVars,
|
|
210
|
+
[templatePart.as || 'i']: i,
|
|
211
|
+
}, this.defaultUnit);
|
|
212
|
+
const result = this.processTemplatePart(templatePart, `${instanceId}.${this.substituteParams(templatePart.id, loopContext)}`, loopContext, materials);
|
|
213
|
+
if (result) {
|
|
214
|
+
if (Array.isArray(result)) {
|
|
215
|
+
parts.push(...result);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
parts.push(result);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
const result = this.processTemplatePart(templatePart, `${instanceId}.${templatePart.id}`, context, materials);
|
|
225
|
+
if (result) {
|
|
226
|
+
if (Array.isArray(result)) {
|
|
227
|
+
parts.push(...result);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
parts.push(result);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Process joinery
|
|
236
|
+
if (template.joinery) {
|
|
237
|
+
for (const templateJoint of template.joinery) {
|
|
238
|
+
const joint = this.processTemplateJoint(templateJoint, instanceId, context);
|
|
239
|
+
joinery.push(joint);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return { parts, joinery };
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Process a nested template reference
|
|
246
|
+
*/
|
|
247
|
+
processNestedTemplate(templatePart, fullId, parentContext, materials) {
|
|
248
|
+
const nestedTemplateName = templatePart.use;
|
|
249
|
+
const nestedTemplate = this.templates.get(nestedTemplateName);
|
|
250
|
+
if (!nestedTemplate) {
|
|
251
|
+
throw new Error(`Nested template not found: ${nestedTemplateName}`);
|
|
252
|
+
}
|
|
253
|
+
// Build params for the nested template by substituting from parent context
|
|
254
|
+
const nestedParams = {};
|
|
255
|
+
if (templatePart.params) {
|
|
256
|
+
for (const [key, value] of Object.entries(templatePart.params)) {
|
|
257
|
+
if (typeof value === 'string') {
|
|
258
|
+
// Substitute any ${...} references from parent context
|
|
259
|
+
nestedParams[key] = this.substituteParams(value, parentContext);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
nestedParams[key] = value;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Recursively instantiate the nested template
|
|
267
|
+
const instanceId = fullId;
|
|
268
|
+
const result = this.instantiate(nestedTemplateName, instanceId, nestedParams, materials);
|
|
269
|
+
return result.parts;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Process a single template part into a Part
|
|
273
|
+
* Returns array for nested templates (which may produce multiple parts)
|
|
274
|
+
*/
|
|
275
|
+
processTemplatePart(templatePart, fullId, context, materials) {
|
|
276
|
+
// Handle nested template use
|
|
277
|
+
if (templatePart.use) {
|
|
278
|
+
return this.processNestedTemplate(templatePart, fullId, context, materials);
|
|
279
|
+
}
|
|
280
|
+
const part = {
|
|
281
|
+
id: fullId,
|
|
282
|
+
name: templatePart.name ? this.substituteParams(templatePart.name, context) : undefined,
|
|
283
|
+
material: templatePart.material ? this.substituteParams(templatePart.material, context) : undefined,
|
|
284
|
+
quantity: templatePart.quantity !== undefined
|
|
285
|
+
? (typeof templatePart.quantity === 'number'
|
|
286
|
+
? templatePart.quantity
|
|
287
|
+
: this.evaluateNumber(templatePart.quantity, context))
|
|
288
|
+
: 1,
|
|
289
|
+
grain: templatePart.grain,
|
|
290
|
+
notes: templatePart.notes ? this.substituteParams(templatePart.notes, context) : undefined,
|
|
291
|
+
};
|
|
292
|
+
if (templatePart.dimensions) {
|
|
293
|
+
part.dimensions = {
|
|
294
|
+
length: templatePart.dimensions.length
|
|
295
|
+
? this.substituteParams(templatePart.dimensions.length, context)
|
|
296
|
+
: undefined,
|
|
297
|
+
width: templatePart.dimensions.width
|
|
298
|
+
? this.substituteParams(templatePart.dimensions.width, context)
|
|
299
|
+
: undefined,
|
|
300
|
+
depth: templatePart.dimensions.depth
|
|
301
|
+
? this.substituteParams(templatePart.dimensions.depth, context)
|
|
302
|
+
: undefined,
|
|
303
|
+
thickness: templatePart.dimensions.thickness
|
|
304
|
+
? this.substituteParams(templatePart.dimensions.thickness, context)
|
|
305
|
+
: undefined,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
return part;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Process a template joint into a Joint
|
|
312
|
+
*/
|
|
313
|
+
processTemplateJoint(templateJoint, instanceId, context) {
|
|
314
|
+
const joint = {
|
|
315
|
+
type: this.substituteParams(templateJoint.type, context),
|
|
316
|
+
};
|
|
317
|
+
if (templateJoint.parts) {
|
|
318
|
+
joint.parts = templateJoint.parts.map(p => `${instanceId}.${p}`);
|
|
319
|
+
}
|
|
320
|
+
if (templateJoint.depth) {
|
|
321
|
+
joint.depth = this.substituteParams(templateJoint.depth, context);
|
|
322
|
+
}
|
|
323
|
+
if (templateJoint.ratio) {
|
|
324
|
+
joint.ratio = this.substituteParams(templateJoint.ratio, context);
|
|
325
|
+
}
|
|
326
|
+
return joint;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Substitute ${param} references in a string
|
|
330
|
+
*/
|
|
331
|
+
substituteParams(template, context) {
|
|
332
|
+
// First pass: substitute simple variable references
|
|
333
|
+
let processed = template.replace(/\$\{([^}]+)\}/g, (_, expr) => {
|
|
334
|
+
// Handle null coalescing: ${a ?? b}
|
|
335
|
+
if (expr.includes('??')) {
|
|
336
|
+
const [primary, fallback] = expr.split('??').map((s) => s.trim());
|
|
337
|
+
const val = context.variables.get(primary);
|
|
338
|
+
if (val !== undefined) {
|
|
339
|
+
if (typeof val === 'number') {
|
|
340
|
+
return String(val);
|
|
341
|
+
}
|
|
342
|
+
if (typeof val === 'string') {
|
|
343
|
+
return val;
|
|
344
|
+
}
|
|
345
|
+
return val.original;
|
|
346
|
+
}
|
|
347
|
+
return fallback;
|
|
348
|
+
}
|
|
349
|
+
// Check if it's a simple variable reference
|
|
350
|
+
const varName = expr.trim();
|
|
351
|
+
const value = context.variables.get(varName);
|
|
352
|
+
if (value !== undefined) {
|
|
353
|
+
if (typeof value === 'number') {
|
|
354
|
+
return String(value);
|
|
355
|
+
}
|
|
356
|
+
if (typeof value === 'string') {
|
|
357
|
+
return value;
|
|
358
|
+
}
|
|
359
|
+
return value.original;
|
|
360
|
+
}
|
|
361
|
+
// Keep as formula reference if not found directly
|
|
362
|
+
return `$${varName}`;
|
|
363
|
+
});
|
|
364
|
+
// If no formula markers remain, return as-is
|
|
365
|
+
if (!processed.includes('$')) {
|
|
366
|
+
return processed;
|
|
367
|
+
}
|
|
368
|
+
// Evaluate the expression
|
|
369
|
+
try {
|
|
370
|
+
const result = (0, formulas_1.evaluateFormula)(processed, context);
|
|
371
|
+
if (typeof result === 'number') {
|
|
372
|
+
return String(result);
|
|
373
|
+
}
|
|
374
|
+
return result.original;
|
|
375
|
+
}
|
|
376
|
+
catch {
|
|
377
|
+
// If evaluation fails, return the processed string
|
|
378
|
+
return processed;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Evaluate an expression to a number
|
|
383
|
+
*/
|
|
384
|
+
evaluateNumber(expr, context) {
|
|
385
|
+
const processed = expr.replace(/\$\{([^}]+)\}/g, '$$$1');
|
|
386
|
+
const result = (0, formulas_1.evaluateFormula)(processed, context);
|
|
387
|
+
if (typeof result === 'number') {
|
|
388
|
+
return result;
|
|
389
|
+
}
|
|
390
|
+
return result.value;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get numeric value from a param value for constraint comparison
|
|
394
|
+
*/
|
|
395
|
+
getNumericValue(value, type) {
|
|
396
|
+
if (typeof value === 'number') {
|
|
397
|
+
return value;
|
|
398
|
+
}
|
|
399
|
+
if (typeof value === 'boolean') {
|
|
400
|
+
return value ? 1 : 0;
|
|
401
|
+
}
|
|
402
|
+
if (typeof value === 'string') {
|
|
403
|
+
if (type === 'dimension') {
|
|
404
|
+
try {
|
|
405
|
+
const dim = (0, units_1.parseDimension)(value, this.defaultUnit);
|
|
406
|
+
return dim.value;
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
return null;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// Try parsing as number
|
|
413
|
+
const num = parseFloat(value);
|
|
414
|
+
return isNaN(num) ? null : num;
|
|
415
|
+
}
|
|
416
|
+
return null;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Get a registered template
|
|
420
|
+
*/
|
|
421
|
+
getTemplate(name) {
|
|
422
|
+
return this.templates.get(name);
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* List all registered templates
|
|
426
|
+
*/
|
|
427
|
+
listTemplates() {
|
|
428
|
+
return Array.from(this.templates.keys());
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
exports.TemplateParser = TemplateParser;
|
|
432
|
+
// ============================================
|
|
433
|
+
// CONVENIENCE FUNCTIONS
|
|
434
|
+
// ============================================
|
|
435
|
+
/**
|
|
436
|
+
* Parse template from YAML string
|
|
437
|
+
*/
|
|
438
|
+
function parseTemplate(yaml, parser) {
|
|
439
|
+
// Note: In real implementation, would use yaml parser
|
|
440
|
+
throw new Error('Use TemplateParser.parseTemplateDefinition with parsed YAML object');
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Create a new template parser
|
|
444
|
+
*/
|
|
445
|
+
function createTemplateParser(defaultUnit = 'imperial') {
|
|
446
|
+
return new TemplateParser(defaultUnit);
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.test.d.ts","sourceRoot":"","sources":["../src/templates.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|