typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
28 lines (27 loc) • 863 B
JavaScript
import { isSnippet } from "../../data/snippet.js";
import { getResolutionCtx } from "../../execMode.js";
/**
* "The reverse of snipping"
* Injects resolved snippets into a template string.
*/
export function stitch(strings, ...snippets) {
const ctx = getResolutionCtx();
function resolveSnippet(maybeSnippet) {
return isSnippet(maybeSnippet) ? ctx.resolveSnippet(maybeSnippet).value : maybeSnippet;
}
let result = '';
for (let i = 0; i < strings.length; ++i) {
result += strings[i];
const snippet = snippets[i];
if (Array.isArray(snippet)) {
result += snippet
.filter((s) => s !== undefined)
.map(resolveSnippet)
.join(', ');
}
else if (snippet) {
result += resolveSnippet(snippet);
}
}
return result;
}