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

Method parse

www/js/_hyperscript.esm.js:9791–9816  ·  view source on GitHub ↗

* Parse when feature * @param {Parser} parser * @returns {WhenFeature | undefined}

(parser)

Source from the content-addressed store, hash-verified

9789 * @returns {WhenFeature | undefined}
9790 */
9791 static parse(parser) {
9792 if (!parser.matchToken("when")) return;
9793 var exprs = [];
9794 do {
9795 parser.pushFollow("or");
9796 try {
9797 exprs.push(parser.requireElement("expression"));
9798 } finally {
9799 parser.popFollow();
9800 }
9801 } while (parser.matchToken("or"));
9802 for (var i = 0; i < exprs.length; i++) {
9803 var expr = exprs[i];
9804 if (expr.type === "symbol" && expr.scope === "local" && !expr.name.startsWith("$") && !expr.name.startsWith(":")) {
9805 parser.raiseError(
9806 "Cannot watch local variable '" + expr.name + "'. Local variables are not reactive. Use '$" + expr.name + "' (global) or ':" + expr.name + "' (element-scoped) instead."
9807 );
9808 }
9809 }
9810 parser.requireToken("changes");
9811 var start = parser.requireElement("commandList");
9812 parser.ensureTerminated(start);
9813 var feature = new _WhenFeature(exprs, start);
9814 parser.setParent(start, feature);
9815 return feature;
9816 }
9817 constructor(exprs, start) {
9818 super();
9819 this.exprs = exprs;

Callers

nothing calls this directly

Calls 8

matchTokenMethod · 0.45
pushFollowMethod · 0.45
requireElementMethod · 0.45
popFollowMethod · 0.45
raiseErrorMethod · 0.45
requireTokenMethod · 0.45
ensureTerminatedMethod · 0.45
setParentMethod · 0.45

Tested by

no test coverage detected