MCPcopy Index your code
hub / github.com/bigskysoftware/_hyperscript / registerParseElement

Method registerParseElement

src/core/kernel.js:306–341  ·  view source on GitHub ↗

* Register a parse element class based on its static metadata. * Commands need `static keyword`, expressions need `static grammarName`.

(ElementClass)

Source from the content-addressed store, hash-verified

304 * Commands need `static keyword`, expressions need `static grammarName`.
305 */
306 registerParseElement(ElementClass) {
307 if (!ElementClass.parse) return;
308
309 const parse = ElementClass.parse.bind(ElementClass);
310
311 // Commands with keyword (supports string or array of strings)
312 if (ElementClass.keyword && ElementClass.prototype instanceof Command) {
313 var keywords = Array.isArray(ElementClass.keyword) ? ElementClass.keyword : [ElementClass.keyword];
314 for (var kw of keywords) this.addCommand(kw, parse);
315 return;
316 }
317
318 // Features with keyword (supports string or array of strings)
319 if (ElementClass.keyword && ElementClass.prototype instanceof Feature) {
320 var keywords = Array.isArray(ElementClass.keyword) ? ElementClass.keyword : [ElementClass.keyword];
321 for (var kw of keywords) this.addFeature(kw, parse);
322 return;
323 }
324
325 // Grammar elements with grammarName
326 const name = ElementClass.grammarName;
327 if (!name) return;
328
329 switch (ElementClass.expressionType) {
330 case 'leaf': this.addLeafExpression(name, parse); break;
331 case 'indirect': this.addIndirectExpression(name, parse); break;
332 case 'unary': this.addUnaryExpression(name, parse); break;
333 case 'top': this.addTopExpression(name, parse); break;
334 case 'postfix': this.addPostfixExpression(name, parse); break;
335 default: this.addGrammarElement(name, parse); break;
336 }
337
338 if (ElementClass.assignable) {
339 this.#assignableExpressions.push(name);
340 }
341 }
342
343 /**
344 * Register all exported parse element classes from a module.

Callers 1

registerModuleMethod · 0.95

Calls 8

addCommandMethod · 0.95
addFeatureMethod · 0.95
addLeafExpressionMethod · 0.95
addIndirectExpressionMethod · 0.95
addUnaryExpressionMethod · 0.95
addTopExpressionMethod · 0.95
addPostfixExpressionMethod · 0.95
addGrammarElementMethod · 0.95

Tested by

no test coverage detected