diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-05-08 17:01:22 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-05-08 17:01:22 +0300 |
| commit | 113eaf4d8a37e212b8528d41e400b346ce9f51d2 (patch) | |
| tree | 757df6c19de09061fad3b5a0b3954f0bbc98747b /Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs | |
| parent | cdba3267d2a47b3bff8cf3ec0219223e36e234ff (diff) | |
| download | Tango-113eaf4d8a37e212b8528d41e400b346ce9f51d2.tar.gz Tango-113eaf4d8a37e212b8528d41e400b346ce9f51d2.zip | |
Added improvements to stubs UI.
Implemented Bug Reporter engine!
Diffstat (limited to 'Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs | 57 |
1 files changed, 43 insertions, 14 deletions
diff --git a/Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs b/Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs index d6f12967c..a8815406d 100644 --- a/Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs +++ b/Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs @@ -38,15 +38,51 @@ namespace Tango.Scripting /// <returns></returns> public async Task Run(String code) { + var options = CreateOptions(); + + String methodParameters = CreateMethodParameters(); + + _cancaller = new CancellationTokenSource(); + + await CSharpScript.RunAsync( + code + + Environment.NewLine + + Environment.NewLine + + "await Task.Factory.StartNew(() => { OnExecute(" + methodParameters + "); });", options: options, globals: _onExecuteParameters, cancellationToken: _cancaller.Token); + } + + public Task<List<CompilerError>> Compile(String code) + { + return Task.Factory.StartNew<List<CompilerError>>(() => + { + var options = CreateOptions(); + + String methodParameters = CreateMethodParameters(); + + _cancaller = new CancellationTokenSource(); + + var script = CSharpScript.Create( + code + + Environment.NewLine + + Environment.NewLine + + "await Task.Factory.StartNew(() => { OnExecute(" + methodParameters + "); });", options: options, globalsType: _onExecuteParameters.GetType()); + + var results = script.Compile(); + + return results.ToList().Select(x => new CompilerError() { Error = x.ToString() }).ToList(); + }); + } + + private String CreateMethodParameters() + { + return String.Join(", ", _onExecuteParameters.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance).Select(x => x.Name)); + } + + private ScriptOptions CreateOptions() + { //My References. var options = ScriptOptions.Default; - //External References. - //foreach (var r in item.References) - //{ - // options = options.AddReferences(r.FilePath); - //} - //My Assemblies. options = options.AddReferences(typeof(Form).Assembly.Location); options = options.AddReferences(typeof(Enumerable).Assembly.Location); @@ -67,14 +103,7 @@ namespace Tango.Scripting "System.Windows.Forms" ); - String methodParameters = String.Join(", ", _onExecuteParameters.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance).Select(x => x.Name)); - - _cancaller = new CancellationTokenSource(); - await CSharpScript.RunAsync( - code + - Environment.NewLine + - Environment.NewLine + - "await Task.Factory.StartNew(() => { OnExecute(" + methodParameters + "); });", options: options, globals: _onExecuteParameters, cancellationToken: _cancaller.Token); + return options; } /// <summary> |
