@thi.ng/parse
Version:
Purely functional parser combinators & AST generation for generic inputs
21 lines (20 loc) • 572 B
JavaScript
const comp = (...xforms) => {
const [a, b, c, d] = xforms;
switch (xforms.length) {
case 0:
return (x) => x;
case 1:
return a;
case 2:
return (scope, ctx, user) => b(a(scope, ctx, user), ctx, user);
case 3:
return (scope, ctx, user) => c(b(a(scope, ctx, user), ctx, user), ctx, user);
case 4:
return (scope, ctx, user) => d(c(b(a(scope, ctx, user), ctx, user), ctx, user), ctx, user);
default:
return (scope, ctx, user) => xforms.reduce((scope2, x) => x(scope2, ctx, user), scope);
}
};
export {
comp
};