MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / unifiedEval

Method unifiedEval

www/js/_hyperscript.esm.js:2194–2250  ·  view source on GitHub ↗
(parseElement, ctx)

Source from the content-addressed store, hash-verified

2192 }
2193 }
2194 unifiedEval(parseElement, ctx) {
2195 var async = false;
2196 var evaluatedArgs = {};
2197 if (parseElement.args) {
2198 for (var [name, argument] of Object.entries(parseElement.args)) {
2199 if (argument == null) {
2200 evaluatedArgs[name] = null;
2201 } else if (Array.isArray(argument)) {
2202 var arr = [];
2203 for (var j = 0; j < argument.length; j++) {
2204 var element = argument[j];
2205 if (element == null) {
2206 arr.push(null);
2207 } else if (element.evaluate) {
2208 var value = element.evaluate(ctx);
2209 if (value && value.then) {
2210 async = true;
2211 }
2212 arr.push(value);
2213 } else {
2214 arr.push(element);
2215 }
2216 }
2217 evaluatedArgs[name] = arr;
2218 } else if (argument.evaluate) {
2219 var value = argument.evaluate(ctx);
2220 if (value && value.then) {
2221 async = true;
2222 }
2223 evaluatedArgs[name] = value;
2224 } else {
2225 evaluatedArgs[name] = argument;
2226 }
2227 }
2228 }
2229 if (async) {
2230 return new Promise((resolve, reject) => {
2231 var keys = Object.keys(evaluatedArgs);
2232 var values = Object.values(evaluatedArgs).map(
2233 (v) => Array.isArray(v) ? Promise.all(v) : v
2234 );
2235 Promise.all(values).then(function(resolved) {
2236 try {
2237 var finalArgs = {};
2238 keys.forEach((k, i) => finalArgs[k] = resolved[i]);
2239 resolve(parseElement.resolve(ctx, finalArgs));
2240 } catch (e) {
2241 reject(e);
2242 }
2243 }).catch(function(reason) {
2244 reject(reason);
2245 });
2246 });
2247 } else {
2248 return parseElement.resolve(ctx, evaluatedArgs);
2249 }
2250 }
2251 findNext(command, context) {

Callers 2

unifiedExecMethod · 0.95
evaluateMethod · 0.45

Calls 3

evaluateMethod · 0.45
forEachMethod · 0.45
resolveMethod · 0.45

Tested by

no test coverage detected