(parser)
| 7909 | this.args = { target: targetExpr }; |
| 7910 | } |
| 7911 | static parse(parser) { |
| 7912 | if (!parser.matchToken("measure")) return; |
| 7913 | var targetExpr; |
| 7914 | var propsToMeasure = []; |
| 7915 | var MEASURE_PROPS = [ |
| 7916 | "x", |
| 7917 | "y", |
| 7918 | "left", |
| 7919 | "top", |
| 7920 | "right", |
| 7921 | "bottom", |
| 7922 | "width", |
| 7923 | "height", |
| 7924 | "bounds", |
| 7925 | "scrollLeft", |
| 7926 | "scrollTop", |
| 7927 | "scrollLeftMax", |
| 7928 | "scrollTopMax", |
| 7929 | "scrollWidth", |
| 7930 | "scrollHeight", |
| 7931 | "scroll" |
| 7932 | ]; |
| 7933 | if (parser.commandBoundary(parser.currentToken())) { |
| 7934 | targetExpr = parser.parseElement("implicitMeTarget"); |
| 7935 | } else { |
| 7936 | var expr = parser.requireElement("expression"); |
| 7937 | if (expr.type === "symbol" && MEASURE_PROPS.includes(expr.name)) { |
| 7938 | targetExpr = parser.parseElement("implicitMeTarget"); |
| 7939 | propsToMeasure.push(expr.name); |
| 7940 | } else if (expr.type === "possessive" && expr.prop) { |
| 7941 | targetExpr = expr.root; |
| 7942 | propsToMeasure.push(expr.prop.value); |
| 7943 | } else if (expr.type === "ofExpression" && expr.prop) { |
| 7944 | targetExpr = expr.root; |
| 7945 | propsToMeasure.push(expr.prop.value); |
| 7946 | } else { |
| 7947 | targetExpr = expr; |
| 7948 | } |
| 7949 | } |
| 7950 | while (parser.matchOpToken(",")) { |
| 7951 | propsToMeasure.push(parser.requireTokenType("IDENTIFIER").value); |
| 7952 | } |
| 7953 | return new _MeasureCommand(targetExpr, propsToMeasure); |
| 7954 | } |
| 7955 | resolve(ctx, { target }) { |
| 7956 | ctx.meta.runtime.nullCheck(target, this.targetExpr); |
| 7957 | if (0 in target) target = target[0]; |
nothing calls this directly
no test coverage detected