mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 13:48:40 +00:00
24 lines
740 B
JavaScript
24 lines
740 B
JavaScript
import { Cyclist } from './cyclist.mjs';
|
|
import { evaluate as _evaluate } from './evaluate.mjs';
|
|
|
|
export function repl({ interval, defaultOutput, onSchedulerError, onEvalError, onEval, getTime, transpiler }) {
|
|
const scheduler = new Cyclist({ interval, onTrigger: defaultOutput, onError: onSchedulerError, getTime });
|
|
const evaluate = async (code) => {
|
|
if (!code) {
|
|
throw new Error('no code to evaluate');
|
|
}
|
|
try {
|
|
const { pattern } = await _evaluate(code, transpiler);
|
|
scheduler.setPattern(pattern, true);
|
|
onEval?.({
|
|
pattern,
|
|
code,
|
|
});
|
|
} catch (err) {
|
|
console.warn(`eval error: ${err.message}`);
|
|
onEvalError?.(err);
|
|
}
|
|
};
|
|
return { scheduler, evaluate };
|
|
}
|