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

Method unifiedEval

tools/common/_hyperscript.iife.js:2182–2238  ·  view source on GitHub ↗
(parseElement, ctx)

Source from the content-addressed store, hash-verified

2180 }
2181 }
2182 unifiedEval(parseElement, ctx) {
2183 var async = false;
2184 var evaluatedArgs = {};
2185 if (parseElement.args) {
2186 for (var [name, argument] of Object.entries(parseElement.args)) {
2187 if (argument == null) {
2188 evaluatedArgs[name] = null;
2189 } else if (Array.isArray(argument)) {
2190 var arr = [];
2191 for (var j = 0; j < argument.length; j++) {
2192 var element = argument[j];
2193 if (element == null) {
2194 arr.push(null);
2195 } else if (element.evaluate) {
2196 var value = element.evaluate(ctx);
2197 if (value && value.then) {
2198 async = true;
2199 }
2200 arr.push(value);
2201 } else {
2202 arr.push(element);
2203 }
2204 }
2205 evaluatedArgs[name] = arr;
2206 } else if (argument.evaluate) {
2207 var value = argument.evaluate(ctx);
2208 if (value && value.then) {
2209 async = true;
2210 }
2211 evaluatedArgs[name] = value;
2212 } else {
2213 evaluatedArgs[name] = argument;
2214 }
2215 }
2216 }
2217 if (async) {
2218 return new Promise((resolve, reject) => {
2219 var keys = Object.keys(evaluatedArgs);
2220 var values = Object.values(evaluatedArgs).map(
2221 (v) => Array.isArray(v) ? Promise.all(v) : v
2222 );
2223 Promise.all(values).then(function(resolved) {
2224 try {
2225 var finalArgs = {};
2226 keys.forEach((k, i) => finalArgs[k] = resolved[i]);
2227 resolve(parseElement.resolve(ctx, finalArgs));
2228 } catch (e) {
2229 reject(e);
2230 }
2231 }).catch(function(reason) {
2232 reject(reason);
2233 });
2234 });
2235 } else {
2236 return parseElement.resolve(ctx, evaluatedArgs);
2237 }
2238 }
2239 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