Make all() post-stack again, and add each() for pre-stack (#1229)

* Rename `all` to `each`, re-instating old `all`
This commit is contained in:
Alex McLean 2024-12-29 10:29:52 +00:00 committed by GitHub
parent 26cc7e2920
commit 9bf0f624f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -63,11 +63,13 @@ export function repl({
let pPatterns = {}; let pPatterns = {};
let anonymousIndex = 0; let anonymousIndex = 0;
let allTransform; let allTransform;
let eachTransform;
const hush = function () { const hush = function () {
pPatterns = {}; pPatterns = {};
anonymousIndex = 0; anonymousIndex = 0;
allTransform = undefined; allTransform = undefined;
eachTransform = undefined;
return silence; return silence;
}; };
@ -88,6 +90,10 @@ export function repl({
allTransform = transform; allTransform = transform;
return silence; return silence;
}; };
const each = function (transform) {
eachTransform = transform;
return silence;
};
// set pattern methods that use this repl via closure // set pattern methods that use this repl via closure
const injectPatternMethods = () => { const injectPatternMethods = () => {
@ -131,6 +137,7 @@ export function repl({
}); });
return evalScope({ return evalScope({
all, all,
each,
hush, hush,
cpm, cpm,
setCps, setCps,
@ -153,11 +160,14 @@ export function repl({
let { pattern, meta } = await _evaluate(code, transpiler, transpilerOptions); let { pattern, meta } = await _evaluate(code, transpiler, transpilerOptions);
if (Object.keys(pPatterns).length) { if (Object.keys(pPatterns).length) {
let patterns = Object.values(pPatterns); let patterns = Object.values(pPatterns);
if (allTransform) { if (eachTransform) {
patterns = patterns.map(allTransform); patterns = patterns.map(eachTransform);
} }
pattern = stack(...patterns); pattern = stack(...patterns);
} else if (allTransform) { } else if (eachTransform) {
pattern = eachTransform(pattern);
}
if (allTransform) {
pattern = allTransform(pattern); pattern = allTransform(pattern);
} }
if (!isPattern(pattern)) { if (!isPattern(pattern)) {