From 9569e2c7b7a7fa05b085b8384e33463fe4dff5d5 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Sun, 17 Jan 2016 15:53:29 -0500 Subject: [PATCH] Improvements to C# code data format --- .../Programming/CSharpCodeDataFormat.cs | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/CSharp/Plugins/UniversalEditor.Plugins.SoftwareDevelopment/DataFormats/Programming/CSharpCodeDataFormat.cs b/CSharp/Plugins/UniversalEditor.Plugins.SoftwareDevelopment/DataFormats/Programming/CSharpCodeDataFormat.cs index 1b858a43..e65cb0c7 100644 --- a/CSharp/Plugins/UniversalEditor.Plugins.SoftwareDevelopment/DataFormats/Programming/CSharpCodeDataFormat.cs +++ b/CSharp/Plugins/UniversalEditor.Plugins.SoftwareDevelopment/DataFormats/Programming/CSharpCodeDataFormat.cs @@ -425,7 +425,16 @@ namespace UniversalEditor.DataFormats.Programming else { INamedCodeElement CurrentElement = ((CodeElement)base.TemporaryVariables["CurrentElement", null] as INamedCodeElement); - if (CurrentElement != null) CurrentElement.Name = lastToken; + if (CurrentElement != null) + { + CurrentElement.Name = lastToken; + } + else + { + // is it an IMultipleNamedCodeElement? + IMultipleNamedCodeElement CurrentEl = ((CodeElement)base.TemporaryVariables["CurrentElement", null] as IMultipleNamedCodeElement); + CurrentEl.Name = lastToken.Split(new char[] { '.' }); + } } base.InhibitTokenProcessing = false; } @@ -456,6 +465,44 @@ namespace UniversalEditor.DataFormats.Programming } base.InhibitTokenProcessing = false; } + else if (token.EndsWith("(")) + { + token = token.Substring(0, token.Length - 1); + string[] dataTypeAndName = token.Split(new char[] { ' ' }); + + if (dataTypeAndName.Length == 2) + { + // has a data type and name + + CodeMethodElement meth = new CodeMethodElement(); + meth.DataType = dataTypeAndName[0].Trim(); + meth.Name = dataTypeAndName[1].Trim(); + meth.IsStatic = ((bool)base.TemporaryVariables["NextElementIsStatic", false]); + meth.AccessModifiers = ((CodeAccessModifiers)base.TemporaryVariables["NextElementAccessModifier", CodeAccessModifiers.None]); + + base.TemporaryVariables.Remove("NextElementIsStatic"); + base.TemporaryVariables.Remove("NextElementAccessModifier"); + + CodeElementContainerElement CurrentElement = (base.TemporaryVariables["CurrentElement", null] as CodeElementContainerElement); + if (CurrentElement != null) + { + CurrentElement.Elements.Add(meth); + } + } + else if (dataTypeAndName.Length == 1) + { + // does not have a data type, must be a method call + CodeMethodCallElement methcall = new CodeMethodCallElement(); + methcall.MethodName = dataTypeAndName[0]; + + CodeElementContainerElement CurrentElement = (base.TemporaryVariables["CurrentElement", null] as CodeElementContainerElement); + if (CurrentElement != null) + { + CurrentElement.Elements.Add(methcall); + } + } + + } else { base.InhibitTokenProcessing = true;