public static void AllowModules(this Engine engine, IEnumerable <IModuleFileReader> readers, IEngineCreator creator) { var importer = new ModuleImporter(readers, creator); engine.SetFunction("import", new Function(args => { var id = engine.Globals["import"] as Function; var directory = engine.GetDirectory(); return(Curry.MinOne(id, args) ?? If.Is <String>(args, fileName => importer.From(fileName, directory))); })); engine.SetFunction("export", new Function(args => { var value = args.Length != 0 ? args[0] : null; Cache.Assign(engine, value); return(null); })); }
public ModuleImporter(IEnumerable <IModuleFileReader> readers, IEngineCreator creator) { _readers = readers; _creator = creator; }