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