MCPcopy Index your code
hub / github.com/bigskysoftware/_hyperscript / parseRepeatExpression

Method parseRepeatExpression

www/js/_hyperscript.js:7072–7173  ·  view source on GitHub ↗
(parser, startedWithForToken)

Source from the content-addressed store, hash-verified

7070 this.args = { value: expression, event: evt, on };
7071 }
7072 static parseRepeatExpression(parser, startedWithForToken) {
7073 var innerStartToken = parser.currentToken();
7074 var identifier;
7075 if (parser.matchToken("for") || startedWithForToken) {
7076 var identifierToken = parser.requireTokenType("IDENTIFIER");
7077 identifier = identifierToken.value;
7078 parser.requireToken("in");
7079 var expression = parser.requireElement("expression");
7080 var walk = expression;
7081 while (walk) {
7082 if (walk.condition) walk.varName = identifier;
7083 walk = walk.root;
7084 }
7085 } else if (parser.matchToken("in")) {
7086 identifier = "it";
7087 var expression = parser.requireElement("expression");
7088 } else if (parser.matchToken("while")) {
7089 var whileExpr = parser.requireElement("expression");
7090 } else if (parser.matchToken("until")) {
7091 var isUntil = true;
7092 if (parser.matchToken("event")) {
7093 var evt = parser.requireElement("dotOrColonPath", "Expected event name");
7094 if (parser.matchToken("from")) {
7095 var on = parser.requireElement("expression");
7096 }
7097 } else {
7098 var whileExpr = parser.requireElement("expression");
7099 }
7100 } else {
7101 if (!parser.commandBoundary(parser.currentToken()) && parser.currentToken().value !== "forever") {
7102 var times = parser.requireElement("expression");
7103 parser.requireToken("times");
7104 } else {
7105 parser.matchToken("forever");
7106 var forever = true;
7107 }
7108 }
7109 if (parser.matchToken("index")) {
7110 var identifierToken = parser.requireTokenType("IDENTIFIER");
7111 var indexIdentifier = identifierToken.value;
7112 } else if (parser.matchToken("indexed")) {
7113 parser.requireToken("by");
7114 var identifierToken = parser.requireTokenType("IDENTIFIER");
7115 var indexIdentifier = identifierToken.value;
7116 }
7117 var loop = parser.parseElement("commandList");
7118 if (loop && evt) {
7119 var last = loop;
7120 while (last.next) {
7121 last = last.next;
7122 }
7123 var waitATick = new WaitATick();
7124 last.next = waitATick;
7125 }
7126 var bottomTested = false;
7127 if (forever && parser.hasMore()) {
7128 if (parser.matchToken("until")) {
7129 forever = false;

Callers 1

parseMethod · 0.45

Calls 9

currentTokenMethod · 0.45
matchTokenMethod · 0.45
requireTokenTypeMethod · 0.45
requireTokenMethod · 0.45
requireElementMethod · 0.45
commandBoundaryMethod · 0.45
parseElementMethod · 0.45
hasMoreMethod · 0.45
setParentMethod · 0.45

Tested by

no test coverage detected