aran-live
Version:
Simpler live API for Aran
11 lines • 518 B
JavaScript
const Acorn = require("acorn");
const Astring = require("astring");
const istrapname = (string) => /^[a-z]*$/.test(string);
const identity = (argument) => argument;
module.exports = (aran, advice) => {
const pointcut = Object.keys(advice).filter(istrapname);
const generate = aran.output === "String" ? identity : Astring.generate;
global[aran.namespace] = advice;
global.eval(generate(aran.setup()));
return (script, scope, options) => generate(aran.weave(Acorn.parse(script, options), pointcut, scope));
};