aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Scripting
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-05-08 17:01:22 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-05-08 17:01:22 +0300
commit113eaf4d8a37e212b8528d41e400b346ce9f51d2 (patch)
tree757df6c19de09061fad3b5a0b3954f0bbc98747b /Software/Visual_Studio/Tango.Scripting
parentcdba3267d2a47b3bff8cf3ec0219223e36e234ff (diff)
downloadTango-113eaf4d8a37e212b8528d41e400b346ce9f51d2.tar.gz
Tango-113eaf4d8a37e212b8528d41e400b346ce9f51d2.zip
Added improvements to stubs UI.
Implemented Bug Reporter engine!
Diffstat (limited to 'Software/Visual_Studio/Tango.Scripting')
-rw-r--r--Software/Visual_Studio/Tango.Scripting/CompilerError.cs18
-rw-r--r--Software/Visual_Studio/Tango.Scripting/ScriptEngine.cs57
-rw-r--r--Software/Visual_Studio/Tango.Scripting/Tango.Scripting.csproj1
3 files changed, 62 insertions, 14 deletions
diff --git a/Software/Visual_Studio/Tango.Scripting/CompilerError.cs b/Software/Visual_Studio/Tango.Scripting/CompilerError.cs
new file mode 100644
index 000000000..367aba123
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Scripting/CompilerError.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Scripting
+{
+ public class CompilerError
+ {
+ public String Error { get; set; }
+
+ public override string ToString()
+ {
+ return Error;
+ }
+ }
+}
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>
diff --git a/Software/Visual_Studio/Tango.Scripting/Tango.Scripting.csproj b/Software/Visual_Studio/Tango.Scripting/Tango.Scripting.csproj
index 1a6e660bd..f9842aeff 100644
--- a/Software/Visual_Studio/Tango.Scripting/Tango.Scripting.csproj
+++ b/Software/Visual_Studio/Tango.Scripting/Tango.Scripting.csproj
@@ -140,6 +140,7 @@
<Compile Include="..\Versioning\GlobalVersionInfo.cs">
<Link>GlobalVersionInfo.cs</Link>
</Compile>
+ <Compile Include="CompilerError.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ScriptEngine.cs" />
<Compile Include="OnExecuteParameters.cs" />