MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / registerParseElement

Method registerParseElement

www/js/_hyperscript.esm.js:1595–1633  ·  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

1593 * Commands need `static keyword`, expressions need `static grammarName`.
1594 */
1595 registerParseElement(ElementClass) {
1596 if (!ElementClass.parse) return;
1597 const parse = ElementClass.parse.bind(ElementClass);
1598 if (ElementClass.keyword && ElementClass.prototype instanceof Command) {
1599 var keywords = Array.isArray(ElementClass.keyword) ? ElementClass.keyword : [ElementClass.keyword];
1600 for (var kw of keywords) this.addCommand(kw, parse);
1601 return;
1602 }
1603 if (ElementClass.keyword && ElementClass.prototype instanceof Feature) {
1604 var keywords = Array.isArray(ElementClass.keyword) ? ElementClass.keyword : [ElementClass.keyword];
1605 for (var kw of keywords) this.addFeature(kw, parse);
1606 return;
1607 }
1608 const name = ElementClass.grammarName;
1609 if (!name) return;
1610 switch (ElementClass.expressionType) {
1611 case "leaf":
1612 this.addLeafExpression(name, parse);
1613 break;
1614 case "indirect":
1615 this.addIndirectExpression(name, parse);
1616 break;
1617 case "unary":
1618 this.addUnaryExpression(name, parse);
1619 break;
1620 case "top":
1621 this.addTopExpression(name, parse);
1622 break;
1623 case "postfix":
1624 this.addPostfixExpression(name, parse);
1625 break;
1626 default:
1627 this.addGrammarElement(name, parse);
1628 break;
1629 }
1630 if (ElementClass.assignable) {
1631 this.#assignableExpressions.push(name);
1632 }
1633 }
1634 /**
1635 * Register all exported parse element classes from a module.
1636 * Iterates over module exports and registers any class with

Callers 1

registerModuleMethod · 0.45

Calls 8

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

Tested by

no test coverage detected