public override ScriptResult ExecuteFile( string path, IDependencyContainer container, ref IScriptContext context, ScriptPluginMeta meta, bool createPluginInstanceOnNull = false, string entryPoint = null, params object[] arguments ) { if (context == null) { context = CreateScriptContext(container.CreateChildContainer()); if (createPluginInstanceOnNull) { var plugin = (JavaScriptPlugin)GetPlugin(meta.Name); if (plugin == null) { plugin = new JavaScriptPlugin(meta, context.Container, this, (JavaScriptContext)context); AddPlugin(plugin); } ((JavaScriptContext)context).Plugin = plugin; context.SetGlobalVariables(); ExecuteFromFileWithImports(((JavaScriptContext)context).ScriptEngine, path); plugin.Load(false); return(new ScriptResult(ScriptExecutionResult.Success)); } } context.SetGlobalVariables(); var engine = ((JavaScriptContext)context).ScriptEngine; if (engine == null) { return(new ScriptResult(ScriptExecutionResult.FailedMisc)); } ExecuteFromFileWithImports(engine, path); if (entryPoint != null) { engine.Invoke(entryPoint, arguments); } var ret = engine.GetCompletionValue(); return(new ScriptResult(ScriptExecutionResult.Success) { HasReturn = ret.Type != Types.None, Return = ret == JsValue.Null ? null : ret }); }
public override ScriptResult ExecuteFile( string path, IDependencyContainer container, ref IScriptContext context, ScriptPluginMeta meta, bool createPluginInstanceOnNull = false, string entryPoint = null, params object[] arguments ) { if (context == null) { context = CreateScriptContext(container.CreateChildContainer()); if (createPluginInstanceOnNull) { var plugin = (CSharpPlugin)GetPlugin(meta.Name); if (plugin == null) { plugin = new CSharpPlugin(meta, context.Container, this, (CSharpScriptContext)context); _plugins.Add(plugin); } ((CSharpScriptContext)context).Plugin = plugin; context.SetGlobalVariables(); plugin.Load(false); return(new ScriptResult(ScriptExecutionResult.Success)); } } context.SetGlobalVariables(); var engine = ((CSharpScriptContext)context).Evaluator; if (engine == null) { return(new ScriptResult(ScriptExecutionResult.FailedMisc)); } engine.LoadFile(path); /* * var ret = engine.CallGlobalFunction(entryPoint, context); * var res = new ScriptResult(ScriptExecutionResult.Success) * { * HasReturn = ret is Undefined, * Return = ret is Null ? null : ret * }; * return res; */ return(new ScriptResult(ScriptExecutionResult.Success)); }
public CSharpPlugin(ScriptPluginMeta pluginMeta, IDependencyContainer container, ScriptingProvider provider, CSharpScriptContext context) : base(pluginMeta, container, provider, context) { }