From 0003ce174e612b9ffc689d93c3e918f501981726 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Tue, 24 Jun 2025 06:06:37 +0200 Subject: [PATCH 1/2] allow calling `all` multiple times --- packages/core/repl.mjs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/core/repl.mjs b/packages/core/repl.mjs index 8acd2bbea..e3d8f6640 100644 --- a/packages/core/repl.mjs +++ b/packages/core/repl.mjs @@ -113,8 +113,9 @@ export function repl({ * all(x => x.pianoroll()) * ``` */ + let allTransforms = []; const all = function (transform) { - allTransform = transform; + allTransforms.push(transform); return silence; }; /** Applies a function to each of the running patterns separately. This is intended for future use with upcoming 'stepwise' features. See `all` for a version that applies the function to all the patterns stacked together into a single pattern. @@ -202,8 +203,10 @@ export function repl({ } else if (eachTransform) { pattern = eachTransform(pattern); } - if (allTransform) { - pattern = allTransform(pattern); + if (allTransforms.length) { + for (let i in allTransforms) { + pattern = allTransforms[i](pattern); + } } if (!isPattern(pattern)) { const message = `got "${typeof evaluated}" instead of pattern`; From d58b3e490b20f08cd5d41fd48c493f13de425939 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Tue, 24 Jun 2025 06:12:21 +0200 Subject: [PATCH 2/2] fix: reset all transforms before eval --- packages/core/repl.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/repl.mjs b/packages/core/repl.mjs index e3d8f6640..7329979c1 100644 --- a/packages/core/repl.mjs +++ b/packages/core/repl.mjs @@ -191,6 +191,7 @@ export function repl({ await injectPatternMethods(); setTime(() => scheduler.now()); // TODO: refactor? await beforeEval?.({ code }); + allTransforms = []; // reset all transforms shouldHush && hush(); let { pattern, meta } = await _evaluate(code, transpiler, transpilerOptions); if (Object.keys(pPatterns).length) {