This package contains the strudel code transformer and evaluator. It allows creating strudel patterns from input code that is optimized for minimal keystrokes and human readability.
This package will not be developed further. Consider using @strudel.cycles/transpiler
as a replacement.
npm i @strudel.cycles/eval --save
import { evalScope } from '@strudel.cycles/core';
import { evaluate } from '@strudel.cycles/eval';
evalScope(
import('@strudel.cycles/core'),
// import other strudel packages here
); // add strudel to eval scope
async function run(code) {
const { pattern } = await evaluate(code);
const events = pattern.firstCycle();
console.log(events.map((e) => e.show()).join('\n'));
}
run('sequence([a3, [b3, c4]])');
yields:
(0/1 -> 1/2, 0/1 -> 1/2, a3)
(1/2 -> 3/4, 1/2 -> 3/4, b3)
(3/4 -> 1/1, 3/4 -> 1/1, c4)
play with @strudel.cycles/eval on codesandbox
shift-traverser is currently monkey patched because its package.json uses estraverse@^4.2.0, which does not support the spread operator (Error: Unknown node type SpreadProperty.). By monkey patched, I mean I copied the source of shift-traverser to a subfolder and installed the dependencies (shift-spec + estraverse@^5.3.0)