diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-03-11 15:41:05 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-03-11 15:41:05 +0200 |
| commit | b0bbc0bec1aaed2230b8a4aa1c08e379fed4629a (patch) | |
| tree | ce6350fdd098e42ce9bab88e1ba86b3fe544ec18 /Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors | |
| parent | 4568cd0ed72a7e4c38d54a3820652e761e3510bc (diff) | |
| download | Tango-b0bbc0bec1aaed2230b8a4aa1c08e379fed4629a.tar.gz Tango-b0bbc0bec1aaed2230b8a4aa1c08e379fed4629a.zip | |
WOrking on script engine.
Diffstat (limited to 'Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors')
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/class.png | bin | 212 -> 417 bytes | |||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/field.png | bin | 395 -> 216 bytes | |||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/interface.png | bin | 222 -> 381 bytes | |||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/namespace.png | bin | 250 -> 241 bytes | |||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/property.png | bin | 363 -> 428 bytes | |||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs | 79 | ||||
| -rw-r--r-- | Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj | 14 |
7 files changed, 73 insertions, 20 deletions
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/class.png b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/class.png Binary files differindex 91b35a829..3e40469f5 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/class.png +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/class.png diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/field.png b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/field.png Binary files differindex 37de414e9..763eadffb 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/field.png +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/field.png diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/interface.png b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/interface.png Binary files differindex 3b07597dd..fb00f0cc7 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/interface.png +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/interface.png diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/namespace.png b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/namespace.png Binary files differindex 7f2b6b5ef..6520448ce 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/namespace.png +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/namespace.png diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/property.png b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/property.png Binary files differindex 4abd1a4a4..d2f90f569 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/property.png +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Images/property.png diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs index 64fb0f194..bcc05bde5 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/ScriptEditor.cs @@ -50,7 +50,7 @@ namespace Tango.Scripting.Editors private ScriptParser _parser; private List<String> _current_usings; private List<KnownType> _knownTypes; - private List<INamedTypeSymbol> _declaredTypes; + private List<ScriptType> _declaredTypes; #region Mini Classes @@ -136,7 +136,7 @@ namespace Tango.Scripting.Editors /// </summary> public ScriptEditor() { - _declaredTypes = new List<INamedTypeSymbol>(); + _declaredTypes = new List<ScriptType>(); _current_usings = new List<string>(); @@ -511,11 +511,11 @@ namespace Tango.Scripting.Editors foreach (var type in _declaredTypes) { - if (type.TypeKind == TypeKind.Interface || type.TypeKind == TypeKind.Enum) + if (type.Kind == TypeKind.Interface || type.Kind == TypeKind.Enum) { interfaceTypes.Add(String.Format("<Word>{0}</Word>", type.Name)); } - else if (type.TypeKind == TypeKind.Class) + else if (type.Kind == TypeKind.Class) { referenceTypes.Add(String.Format("<Word>{0}</Word>", type.Name)); } @@ -752,6 +752,15 @@ namespace Tango.Scripting.Editors ShowCompletionWindow(data, GetCurrentWord()); } + else + { + var declaredType = GetCurrentDeclaredType(); + + if (declaredType != null) + { + + } + } } else if (e.Text == "(" || e.Text == ",") { @@ -837,43 +846,43 @@ namespace Tango.Scripting.Editors foreach (var type in _declaredTypes.Where(x => x.Name.StartsWith(word))) { - if (type.TypeKind == TypeKind.Struct) + if (type.Kind == TypeKind.Struct) { data.Add(new StructCompletionItem() { Name = type.Name, Description = "Declared inside the current script...", - Namespace = type.ContainingNamespace?.Name, + Namespace = type.ContainingNamespace, Priority = 1, }); } - else if (type.TypeKind == TypeKind.Enum) + else if (type.Kind == TypeKind.Enum) { data.Add(new EnumCompletionItem() { Name = type.Name, Description = "Declared inside the current script...", - Namespace = type.ContainingNamespace?.Name, + Namespace = type.ContainingNamespace, Priority = 1, }); } - else if (type.TypeKind == TypeKind.Interface) + else if (type.Kind == TypeKind.Interface) { data.Add(new InterfaceCompletionItem() { Name = type.Name, Description = "Declared inside the current script...", - Namespace = type.ContainingNamespace?.Name, + Namespace = type.ContainingNamespace, Priority = 1, }); } - else if (type.TypeKind == TypeKind.Class) + else if (type.Kind == TypeKind.Class) { data.Add(new ClassCompletionItem() { Name = type.Name, Description = "Declared inside the current script...", - Namespace = type.ContainingNamespace?.Name, + Namespace = type.ContainingNamespace, Priority = 1, }); } @@ -944,7 +953,7 @@ namespace Tango.Scripting.Editors Priority = 2, }); } - else if (symbol.Kind == SymbolKind.Field) + else if (symbol.Kind == SymbolKind.Field || symbol.Kind == SymbolKind.Local) { data.Add(new FieldCompletionItem() { @@ -1110,6 +1119,50 @@ namespace Tango.Scripting.Editors return null; } + private ScriptType GetCurrentDeclaredType() + { + var expression = GetPreviousWords().LastOrDefault(); + + if (expression != null) + { + var tree = expression.Split('.').Select(x => x.Remove(@"\n|\t|\r|\(.*\)|\[.*\]|\s")).ToList(); + var variableName = tree.FirstOrDefault(); + + if (variableName != null) + { + tree.RemoveAt(0); + var variables = _parser.GetContextSymbols(Document.Text, CaretOffset); + var variable = variables.FirstOrDefault(x => x.Name == variableName); + + if (variable != null) + { + var declaredType = _declaredTypes.FirstOrDefault(x => x.Name == Regex.Replace(variable.Type, "<.+>", "<T>")); + + if (declaredType != null) + { + while (tree.Count > 1) + { + var memberName = tree.First(); + tree.RemoveAt(0); + var member = declaredType.Symbols.FirstOrDefault(x => x.Name == memberName); + + if (member == null) + { + return null; + } + + declaredType = _declaredTypes.FirstOrDefault(x => x.ContainingNamespace + "." + x.Name == member.ContainingNamespace + "." + member.Type); + } + + return declaredType; + } + } + } + } + + return null; + } + #endregion #region Popup diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj index e5960a664..8b213a870 100644 --- a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj +++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.Editors/Tango.Scripting.Editors.csproj @@ -597,32 +597,32 @@ <Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.1.1.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll" /> </ItemGroup> <ItemGroup> - <Resource Include="Images\enum.png" /> + <Resource Include="Images\method.png" /> </ItemGroup> <ItemGroup> <Resource Include="Images\class.png" /> </ItemGroup> <ItemGroup> - <Resource Include="Images\interface.png" /> + <Resource Include="Images\enum.png" /> </ItemGroup> <ItemGroup> - <Resource Include="Images\struct.png" /> + <Resource Include="Images\field.png" /> </ItemGroup> <ItemGroup> - <Resource Include="Images\namespace.png" /> + <Resource Include="Images\interface.png" /> </ItemGroup> <ItemGroup> - <Resource Include="Images\method.png" /> + <Resource Include="Images\namespace.png" /> </ItemGroup> <ItemGroup> <Resource Include="Images\property.png" /> </ItemGroup> <ItemGroup> - <Resource Include="Images\field.png" /> + <Resource Include="Images\struct.png" /> </ItemGroup> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UseGlobalSettings="True" /> + <UserProperties BuildVersion_UseGlobalSettings="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file |
