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

Method parse

www/js/_hyperscript.js:7936–8029  ·  view source on GitHub ↗
(parser)

Source from the content-addressed store, hash-verified

7934 this.args = { on: onExpr, time, evt, from, classRef, classRef2, classRefs, betweenValues };
7935 }
7936 static parse(parser) {
7937 if (!parser.matchToken("toggle")) return;
7938 parser.matchAnyToken("the", "my");
7939 var visibility = false;
7940 var hideShowStrategy = null;
7941 var onExpr = null;
7942 var classRef = null;
7943 var classRef2 = null;
7944 var classRefs = null;
7945 var attributeRef = null;
7946 var attributeRef2 = null;
7947 var betweenClass = false;
7948 var betweenAttr = false;
7949 var toggleExpr = null;
7950 var styleProp = null;
7951 if (parser.currentToken().type === "STYLE_REF") {
7952 let styleRef = parser.consumeToken();
7953 styleProp = styleRef.value.slice(1);
7954 visibility = true;
7955 hideShowStrategy = VisibilityCommand.resolveHideShowStrategy(parser, styleProp);
7956 if (parser.matchToken("of")) {
7957 var follows = parser.pushFollows("with", "between");
7958 try {
7959 onExpr = parser.requireElement("expression");
7960 } finally {
7961 parser.popFollows(follows);
7962 }
7963 } else {
7964 onExpr = parser.requireElement("implicitMeTarget");
7965 }
7966 } else if (parser.matchToken("between")) {
7967 classRef = parser.parseElement("classRef");
7968 if (classRef != null) {
7969 betweenClass = true;
7970 parser.requireToken("and");
7971 classRef2 = parser.requireElement("classRef");
7972 } else {
7973 betweenAttr = true;
7974 attributeRef = parser.parseElement("attributeRef");
7975 if (attributeRef == null) {
7976 parser.raiseError("Expected either a class reference or attribute expression");
7977 }
7978 parser.requireToken("and");
7979 attributeRef2 = parser.requireElement("attributeRef");
7980 }
7981 } else if (classRef = parser.parseElement("classRef")) {
7982 classRefs = [classRef];
7983 while (classRef = parser.parseElement("classRef")) {
7984 classRefs.push(classRef);
7985 }
7986 } else if (attributeRef = parser.parseElement("attributeRef")) {
7987 } else {
7988 parser.pushFollow("between");
7989 toggleExpr = parser.parseElement("assignableExpression");
7990 parser.popFollow();
7991 if (toggleExpr == null) {
7992 parser.raiseError("Expected a class reference, attribute, style property, or settable expression");
7993 }

Callers

nothing calls this directly

Calls 15

matchTokenMethod · 0.45
matchAnyTokenMethod · 0.45
currentTokenMethod · 0.45
consumeTokenMethod · 0.45
pushFollowsMethod · 0.45
requireElementMethod · 0.45
popFollowsMethod · 0.45
parseElementMethod · 0.45
requireTokenMethod · 0.45
raiseErrorMethod · 0.45
pushFollowMethod · 0.45

Tested by

no test coverage detected