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

Method registerParseElement

www/js/_hyperscript.js:1597–1635  ·  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

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