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

Method parse

www/js/_hyperscript.esm.js:8359–8402  ·  view source on GitHub ↗
(parser)

Source from the content-addressed store, hash-verified

8357 this.args = { target: targetExpr };
8358 }
8359 static parse(parser) {
8360 if (!parser.matchToken("measure")) return;
8361 var targetExpr;
8362 var propsToMeasure = [];
8363 var MEASURE_PROPS = [
8364 "x",
8365 "y",
8366 "left",
8367 "top",
8368 "right",
8369 "bottom",
8370 "width",
8371 "height",
8372 "bounds",
8373 "scrollLeft",
8374 "scrollTop",
8375 "scrollLeftMax",
8376 "scrollTopMax",
8377 "scrollWidth",
8378 "scrollHeight",
8379 "scroll"
8380 ];
8381 if (parser.commandBoundary(parser.currentToken())) {
8382 targetExpr = parser.parseElement("implicitMeTarget");
8383 } else {
8384 var expr = parser.requireElement("expression");
8385 if (expr.type === "symbol" && MEASURE_PROPS.includes(expr.name)) {
8386 targetExpr = parser.parseElement("implicitMeTarget");
8387 propsToMeasure.push(expr.name);
8388 } else if (expr.type === "possessive" && expr.prop) {
8389 targetExpr = expr.root;
8390 propsToMeasure.push(expr.prop.value);
8391 } else if (expr.type === "ofExpression" && expr.prop) {
8392 targetExpr = expr.root;
8393 propsToMeasure.push(expr.prop.value);
8394 } else {
8395 targetExpr = expr;
8396 }
8397 }
8398 while (parser.matchOpToken(",")) {
8399 propsToMeasure.push(parser.requireTokenType("IDENTIFIER").value);
8400 }
8401 return new _MeasureCommand(targetExpr, propsToMeasure);
8402 }
8403 resolve(ctx, { target }) {
8404 ctx.meta.runtime.nullCheck(target, this.targetExpr);
8405 if (0 in target) target = target[0];

Callers

nothing calls this directly

Calls 7

matchTokenMethod · 0.45
commandBoundaryMethod · 0.45
currentTokenMethod · 0.45
parseElementMethod · 0.45
requireElementMethod · 0.45
matchOpTokenMethod · 0.45
requireTokenTypeMethod · 0.45

Tested by

no test coverage detected