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

Method parse

src/ext/eventsource.js:107–176  ·  view source on GitHub ↗
(parser)

Source from the content-addressed store, hash-verified

105 }
106
107 static parse(parser) {
108 if (!parser.matchToken("eventsource")) return;
109
110 var urlElement;
111 var withCredentials = false;
112 var method = 'GET';
113 var headers = null;
114
115 var name = parser.requireElement("dotOrColonPath");
116 var qualifiedName = name.evalStatically();
117 var nameSpace = qualifiedName.split(".");
118 var eventSourceName = nameSpace.pop();
119
120 if (parser.matchToken("from")) {
121 urlElement = parser.parseURLOrExpression();
122 }
123
124 // Parse options: with credentials, with method, with headers (in any order)
125 while (parser.matchToken("with")) {
126 if (parser.matchToken("credentials")) {
127 withCredentials = true;
128 } else if (parser.matchToken("method")) {
129 method = parser.requireElement("stringLike").evalStatically().toUpperCase();
130 } else if (parser.matchToken("headers")) {
131 headers = parser.requireElement("objectLiteral");
132 } else {
133 parser.raiseExpected("credentials", "method", "headers");
134 }
135 }
136
137 // Evaluate headers at parse time - keys and values must be static literals
138 var staticHeaders = null;
139 if (headers) {
140 staticHeaders = {};
141 for (var i = 0; i < headers.keyExpressions.length; i++) {
142 var key = headers.keyExpressions[i].evalStatically();
143 var val = headers.valueExpressions[i].evalStatically();
144 staticHeaders[key] = val;
145 }
146 }
147
148 var stub = createStub(withCredentials, method, staticHeaders);
149 var feature = new EventSourceFeature(eventSourceName, nameSpace, stub);
150
151 while (parser.matchToken("on")) {
152 var eventName = parser.requireElement("stringLike").evalStatically();
153
154 var encoding = "";
155 if (parser.matchToken("as")) {
156 encoding = parser.requireElement("stringLike").evalStatically();
157 }
158
159 var commandList = parser.requireElement("commandList");
160 parser.ensureTerminated(commandList);
161 parser.requireToken("end");
162
163 stub.listeners.push({
164 type: eventName,

Callers 1

decodeFunction · 0.45

Calls 9

createStubFunction · 0.70
makeHandlerFunction · 0.70
matchTokenMethod · 0.45
requireElementMethod · 0.45
evalStaticallyMethod · 0.45
parseURLOrExpressionMethod · 0.45
raiseExpectedMethod · 0.45
ensureTerminatedMethod · 0.45
requireTokenMethod · 0.45

Tested by

no test coverage detected