From 75c4015f2a4757b264187d9ea579d5505c4fcf7b Mon Sep 17 00:00:00 2001 From: Vogel612 Date: Sat, 20 Apr 2019 13:49:54 +0200 Subject: [PATCH 1/4] Fix reorder parameters preview This also introduces an extension to the Accessibility enum to provide a codestring. We're replacing the StringBuilder code with a more easily followed interpolated string as well --- .../ReorderParametersViewModel.cs | 58 ++++++------------- Rubberduck.Parsing/Symbols/Accessibility.cs | 9 +++ 2 files changed, 27 insertions(+), 40 deletions(-) diff --git a/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs b/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs index 8750086836..828f852836 100644 --- a/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs +++ b/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs @@ -93,70 +93,48 @@ public string SignaturePreview private string GetSignature(SubroutineDeclaration member) { - var signature = new StringBuilder(); - signature.Append(member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString()); - signature.Append($" Sub {member.IdentifierName}("); - - var selectedParams = Parameters.Select(s => s.Name); - signature.Append($", {selectedParams})"); - return signature.ToString(); + var accessibility = member.Accessibility.CodeString(); + var parameterList = string.Join(", ", Parameters.Select(p => p.Name)); + return $"{accessibility} Sub {member.IdentifierName}({parameterList})"; } private string GetSignature(FunctionDeclaration member) { - var signature = new StringBuilder(); - signature.Append(member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString()); - signature.Append($" Function {member.IdentifierName}("); - - var selectedParams = Parameters.Select(s => s.Name); - signature.Append($", {selectedParams}) As {member.AsTypeName}"); - return signature.ToString(); + var accessibility = member.Accessibility.CodeString(); + var parameterList = string.Join(", ", Parameters.Select(p => p.Name)); + return $"{accessibility} Function {member.IdentifierName}({parameterList}) As {member.AsTypeName}"; } private string GetSignature(EventDeclaration member) { - var signature = new StringBuilder(); - signature.Append(member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString()); - signature.Append($" Event {member.IdentifierName}("); - - var selectedParams = Parameters.Select(s => s.Name); - signature.Append($", {selectedParams})"); - return signature.ToString(); + var access = member.Accessibility.CodeString(); + var parameters = string.Join(", ", Parameters.Select(p => p.Name)); + return $"{access} Event {member.IdentifierName}({parameters})"; } private string GetSignature(PropertyGetDeclaration member) { - var signature = new StringBuilder(); - signature.Append(member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString()); - signature.Append($" Property Get {member.IdentifierName}("); - - var selectedParams = Parameters.Select(s => s.Name); - signature.Append($", {selectedParams}) As {member.AsTypeName}"); - return signature.ToString(); + var access = member.Accessibility.CodeString(); + var parameters = string.Join(", ", Parameters.Select(p => p.Name)); + return $"{access} Property Get {member.IdentifierName}({parameters}) As {member.AsTypeName}"; } private string GetSignature(PropertyLetDeclaration member) { - var signature = new StringBuilder(); - signature.Append(member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString()); - signature.Append($" Property Let {member.IdentifierName}("); - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last(), -1).Name); - signature.Append($", {selectedParams})"); - return signature.ToString(); + var parameters = string.Join(", ", selectedParams); + return $"{access} Property Let {member.IdentifierName}({parameters})"; } private string GetSignature(PropertySetDeclaration member) { - var signature = new StringBuilder(); - signature.Append(member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString()); - signature.Append($" Property Set {member.IdentifierName}("); - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last(), -1).Name); - signature.Append($", {selectedParams})"); - return signature.ToString(); + var parameters = string.Join(", ", selectedParams); + return $"{access} Property Set {member.IdentifierName}({parameters})"; } public void UpdatePreview() => OnPropertyChanged(nameof(SignaturePreview)); diff --git a/Rubberduck.Parsing/Symbols/Accessibility.cs b/Rubberduck.Parsing/Symbols/Accessibility.cs index 85df8b6d9a..050b05f33e 100644 --- a/Rubberduck.Parsing/Symbols/Accessibility.cs +++ b/Rubberduck.Parsing/Symbols/Accessibility.cs @@ -9,4 +9,13 @@ public enum Accessibility Global = 5, Static = 6 } + + public static class AccessibilityExtensions + { + public static string CodeString(this Accessibility access) + { + return access == Accessibility.Implicit ? string.Empty : access.ToString(); + } + } + } From a1e4d487b74d8ca91e00a68018e42f7ae8869e4f Mon Sep 17 00:00:00 2001 From: Vogel612 Date: Sat, 20 Apr 2019 13:50:31 +0200 Subject: [PATCH 2/4] Bring RemoveParameters signature preview generation in line with ReorderParameters --- .../RemoveParametersViewModel.cs | 36 +++++++------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs b/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs index c0d68968a7..8591f9cf49 100644 --- a/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs +++ b/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs @@ -90,58 +90,46 @@ public string SignaturePreview private string GetSignature(SubroutineDeclaration member) { - var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString(); - signature += " Sub " + member.IdentifierName + "("; - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); - return signature + string.Join(", ", selectedParams) + ")"; + return $"{access} Sub {member.IdentifierName}({string.Join(", ", selectedParams)})"; } private string GetSignature(FunctionDeclaration member) { - var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString(); - signature += " Function " + member.IdentifierName + "("; - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); - return signature + string.Join(", ", selectedParams) + ") As " + member.AsTypeName; + return $"{access} Function {member.IdentifierName}({string.Join(", ", selectedParams)}) As {member.AsTypeName}"; } private string GetSignature(EventDeclaration member) { - var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString(); - signature += " Event " + member.IdentifierName + "("; - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); - return signature + string.Join(", ", selectedParams) + ")"; + return $"{access} Event {member.IdentifierName}({string.Join(", ", selectedParams)})"; } private string GetSignature(PropertyGetDeclaration member) { - var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString(); - signature += " Property Get " + member.IdentifierName + "("; - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); - return signature + string.Join(", ", selectedParams) + ") As " + member.AsTypeName; + return $"{access} Property Get {member.IdentifierName}({string.Join(", ", selectedParams)}) As {member.AsTypeName}"; } private string GetSignature(PropertyLetDeclaration member) { - var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString(); - signature += " Property Let " + member.IdentifierName + "("; - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last()).Name); - return signature + string.Join(", ", selectedParams) + ")"; + return $"{access} Property Let {member.IdentifierName}({string.Join(", ", selectedParams)})"; } private string GetSignature(PropertySetDeclaration member) { - var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString(); - signature += " Property Set " + member.IdentifierName + "("; - + var access = member.Accessibility.CodeString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last()).Name); - return signature + string.Join(", ", selectedParams) + ")"; + return $"{access} Property Set {member.IdentifierName}({string.Join(", ", selectedParams)})"; } private void RemoveParameter(ParameterViewModel parameter) From cd9e69810179bddf6007a4764992e4b641cec800 Mon Sep 17 00:00:00 2001 From: Mathieu Guindon Date: Tue, 23 Apr 2019 17:22:54 +0200 Subject: [PATCH 3/4] Add Doc-Comment to CodeString extension Co-Authored-By: Vogel612 --- Rubberduck.Parsing/Symbols/Accessibility.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Rubberduck.Parsing/Symbols/Accessibility.cs b/Rubberduck.Parsing/Symbols/Accessibility.cs index 050b05f33e..005e8219c2 100644 --- a/Rubberduck.Parsing/Symbols/Accessibility.cs +++ b/Rubberduck.Parsing/Symbols/Accessibility.cs @@ -12,6 +12,10 @@ public enum Accessibility public static class AccessibilityExtensions { + /// + /// Gets the string/token representation of an accessibility specifier. + /// + /// Implicit accessibility being unspecified, yields an empty string. public static string CodeString(this Accessibility access) { return access == Accessibility.Implicit ? string.Empty : access.ToString(); From 765f931298fbec0336ade8e6cdf1b4edb45174a7 Mon Sep 17 00:00:00 2001 From: Vogel612 Date: Thu, 25 Apr 2019 21:00:35 +0200 Subject: [PATCH 4/4] Rename CodeString to clearer name --- .../RemoveParameters/RemoveParametersViewModel.cs | 12 ++++++------ .../ReorderParameters/ReorderParametersViewModel.cs | 12 ++++++------ Rubberduck.Parsing/Symbols/Accessibility.cs | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs b/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs index 8591f9cf49..8956ff544e 100644 --- a/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs +++ b/Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersViewModel.cs @@ -90,35 +90,35 @@ public string SignaturePreview private string GetSignature(SubroutineDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); return $"{access} Sub {member.IdentifierName}({string.Join(", ", selectedParams)})"; } private string GetSignature(FunctionDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); return $"{access} Function {member.IdentifierName}({string.Join(", ", selectedParams)}) As {member.AsTypeName}"; } private string GetSignature(EventDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); return $"{access} Event {member.IdentifierName}({string.Join(", ", selectedParams)})"; } private string GetSignature(PropertyGetDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name); return $"{access} Property Get {member.IdentifierName}({string.Join(", ", selectedParams)}) As {member.AsTypeName}"; } private string GetSignature(PropertyLetDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last()).Name); return $"{access} Property Let {member.IdentifierName}({string.Join(", ", selectedParams)})"; @@ -126,7 +126,7 @@ private string GetSignature(PropertyLetDeclaration member) private string GetSignature(PropertySetDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Where(p => !p.IsRemoved).Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last()).Name); return $"{access} Property Set {member.IdentifierName}({string.Join(", ", selectedParams)})"; diff --git a/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs b/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs index 828f852836..a8bdfe3536 100644 --- a/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs +++ b/Rubberduck.Core/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs @@ -93,35 +93,35 @@ public string SignaturePreview private string GetSignature(SubroutineDeclaration member) { - var accessibility = member.Accessibility.CodeString(); + var accessibility = member.Accessibility.TokenString(); var parameterList = string.Join(", ", Parameters.Select(p => p.Name)); return $"{accessibility} Sub {member.IdentifierName}({parameterList})"; } private string GetSignature(FunctionDeclaration member) { - var accessibility = member.Accessibility.CodeString(); + var accessibility = member.Accessibility.TokenString(); var parameterList = string.Join(", ", Parameters.Select(p => p.Name)); return $"{accessibility} Function {member.IdentifierName}({parameterList}) As {member.AsTypeName}"; } private string GetSignature(EventDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var parameters = string.Join(", ", Parameters.Select(p => p.Name)); return $"{access} Event {member.IdentifierName}({parameters})"; } private string GetSignature(PropertyGetDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var parameters = string.Join(", ", Parameters.Select(p => p.Name)); return $"{access} Property Get {member.IdentifierName}({parameters}) As {member.AsTypeName}"; } private string GetSignature(PropertyLetDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last(), -1).Name); var parameters = string.Join(", ", selectedParams); @@ -130,7 +130,7 @@ private string GetSignature(PropertyLetDeclaration member) private string GetSignature(PropertySetDeclaration member) { - var access = member.Accessibility.CodeString(); + var access = member.Accessibility.TokenString(); var selectedParams = Parameters.Select(s => s.Name).ToList(); selectedParams.Add(new Parameter(member.Parameters.Last(), -1).Name); var parameters = string.Join(", ", selectedParams); diff --git a/Rubberduck.Parsing/Symbols/Accessibility.cs b/Rubberduck.Parsing/Symbols/Accessibility.cs index 005e8219c2..918fad04ac 100644 --- a/Rubberduck.Parsing/Symbols/Accessibility.cs +++ b/Rubberduck.Parsing/Symbols/Accessibility.cs @@ -16,7 +16,7 @@ public static class AccessibilityExtensions /// Gets the string/token representation of an accessibility specifier. /// /// Implicit accessibility being unspecified, yields an empty string. - public static string CodeString(this Accessibility access) + public static string TokenString(this Accessibility access) { return access == Accessibility.Implicit ? string.Empty : access.ToString(); }