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

Method parse

www/js/_hyperscript-max.js:9792–9817  ·  view source on GitHub ↗

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

(parser)

Source from the content-addressed store, hash-verified

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