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

Method resolve

www/js/_hyperscript.js:10322–10372  ·  view source on GitHub ↗
(ctx, { template, templateArgs, target })

Source from the content-addressed store, hash-verified

10320 return cmd;
10321 }
10322 resolve(ctx, { template, templateArgs, target }) {
10323 if (!(template instanceof Element)) throw new Error(this.template_.sourceFor() + " is not an element");
10324 var buf = [];
10325 var runtime2 = ctx.meta.runtime;
10326 var renderCtx = runtime2.makeContext(ctx.me, null, ctx.me, null);
10327 renderCtx.locals = Object.assign({}, ctx.locals, templateArgs);
10328 renderCtx.meta.__ht_template_result = buf;
10329 var tokens = new Tokenizer().tokenize(getTemplateSource(template), "lines");
10330 var parser = this._parser.createChildParser(tokens);
10331 var commandList;
10332 try {
10333 commandList = parser.parseElement("commandList");
10334 parser.ensureTerminated(commandList);
10335 } catch (e) {
10336 console.error("hyperscript template parse error:", e.parseError?.message || e.message || e);
10337 ctx.result = "";
10338 return runtime2.findNext(this, ctx);
10339 }
10340 var errors = commandList.collectErrors();
10341 if (errors.length) {
10342 for (var err of errors) {
10343 console.error("hyperscript template error (line " + err.line + "): " + err.message + (err.expr ? " in ${" + err.expr + "}" : ""));
10344 }
10345 }
10346 var resolve, reject;
10347 var promise = new Promise(function(res, rej) {
10348 resolve = res;
10349 reject = rej;
10350 });
10351 commandList.execute(renderCtx);
10352 var scopes = renderCtx.meta.__ht_scopes || null;
10353 var SCOPE_MARKER_RE = /<!--hs-scope:[^>]*-->/g;
10354 var finish = (result) => {
10355 ctx.result = result.replace(SCOPE_MARKER_RE, "");
10356 if (this.insertHere) {
10357 ctx.me.__hs_scopes = scopes;
10358 ctx.me.innerHTML = result;
10359 }
10360 if (target) {
10361 target.__hs_scopes = scopes;
10362 target.innerHTML = result;
10363 }
10364 return runtime2.findNext(this, ctx);
10365 };
10366 if (renderCtx.meta.returned) {
10367 return finish(buf.join(""));
10368 }
10369 renderCtx.meta.resolve = resolve;
10370 renderCtx.meta.reject = reject;
10371 return promise.then(() => finish(buf.join("")));
10372 }
10373 };
10374 var EscapeExpression = class _EscapeExpression extends Expression {
10375 static grammarName = "escape";

Callers

nothing calls this directly

Calls 10

getTemplateSourceFunction · 0.70
sourceForMethod · 0.45
makeContextMethod · 0.45
tokenizeMethod · 0.45
createChildParserMethod · 0.45
parseElementMethod · 0.45
ensureTerminatedMethod · 0.45
findNextMethod · 0.45
collectErrorsMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected