aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-04-22 02:08:25 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-04-22 02:08:25 +0300
commit499e0a03bb41e2330a47ccca83e6e6dfe7c5a634 (patch)
tree5d5d7866e33c1ae8a55cfa67be65848a25be7ab4 /Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
parent97a784b6ce43960bdb92465b08f26d3562a4f202 (diff)
downloadTango-499e0a03bb41e2330a47ccca83e6e6dfe7c5a634.tar.gz
Tango-499e0a03bb41e2330a47ccca83e6e6dfe7c5a634.zip
Scripting.
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs23
1 files changed, 12 insertions, 11 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
index 31be3a714..85caf4706 100644
--- a/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Basic/Project.cs
@@ -18,7 +18,7 @@ using System.IO;
namespace Tango.Scripting.Basic
{
- public class Project : ExtendedObject
+ public class Project<T> : ExtendedObject where T : IContext
{
private String _name;
public String Name
@@ -43,6 +43,7 @@ namespace Tango.Scripting.Basic
public ObservableCollection<Script> Scripts { get; set; }
+ [JsonIgnore]
public ObservableCollection<IScriptSource> AdditionalScripts
{
get
@@ -78,16 +79,16 @@ namespace Tango.Scripting.Basic
}
}
- public static Project New(String name)
+ public static Project<T> New(String name)
{
- Project p = new Project();
+ Project<T> p = new Project<T>();
p.Name = name;
p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(String) });
p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Enumerable) });
p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Form) });
- p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Project) });
+ p.ReferenceAssemblies.Add(new ReferenceAssembly() { FromType = typeof(Project<T>) });
return p;
}
@@ -140,14 +141,14 @@ namespace Tango.Scripting.Basic
}
else
{
- code += Environment.NewLine + Environment.NewLine + "return new Program().OnExecute(GlobalContext);";
+ code += Environment.NewLine + Environment.NewLine + "new Program().OnExecute(GlobalContext);";
mainScriptCode = code;
}
}
var scriptOptions = ScriptOptions.Default.WithReferences(ReferenceAssembliesLoaded);
- var s = CSharpScript.Create<object>(mainScriptCode, scriptOptions, typeof(GlobalObject));
+ var s = CSharpScript.Create<object>(mainScriptCode, scriptOptions, typeof(GlobalObject<T>));
result.Script = s;
var compileResults = s.Compile();
@@ -164,7 +165,7 @@ namespace Tango.Scripting.Basic
cError.Message = error.GetMessage();
cError.Severity = error.Severity;
var line = error.Location.GetMappedLineSpan();
- cError.Line = line.StartLinePosition.Line + 1 + (errorScript != null ? errorScript.LoadCount : 0);
+ cError.Line = line.StartLinePosition.Line + 1 - (errorScript != null ? errorScript.LoadCount : 0);
cError.Column = line.StartLinePosition.Character + 1;
cError.Length = line.EndLinePosition.Character - line.StartLinePosition.Character;
result.Errors.Add(cError);
@@ -174,7 +175,7 @@ namespace Tango.Scripting.Basic
});
}
- public async Task<ProjectSession> Run(IContext context)
+ public async Task<ProjectSession<T>> Run(T context)
{
var result = await Compile();
@@ -184,9 +185,9 @@ namespace Tango.Scripting.Basic
}
Thread scriptThread = null;
- ProjectSession session = null;
+ ProjectSession<T> session = null;
- session = new ProjectSession(this, () =>
+ session = new ProjectSession<T>(this, () =>
{
scriptThread.Abort();
});
@@ -195,7 +196,7 @@ namespace Tango.Scripting.Basic
{
try
{
- var runResult = result.Script.RunAsync(globals: new GlobalObject() { GlobalContext = context }).Result;
+ var runResult = result.Script.RunAsync(globals: new GlobalObject<T>() { GlobalContext = context }).Result;
session.Completed(runResult.ReturnValue);
}
catch (ThreadAbortException)