Skip to content

Commit f468e8e

Browse files
committed
Simplify Identifier validations
Using VBAIdentifierValidator directly and removed wrapper classes. Renamed Validations folder to ConflictDetection.
1 parent 9fde732 commit f468e8e

12 files changed

+20
-132
lines changed

Rubberduck.Refactorings/EncapsulateField/Validations/ConvertFieldsToUDTMembersStrategyConflictFinder.cs renamed to Rubberduck.Refactorings/EncapsulateField/ConflictDetection/ConvertFieldsToUDTMembersStrategyConflictFinder.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
using Rubberduck.Parsing.Symbols;
22
using Rubberduck.Parsing.VBA;
33
using Rubberduck.Refactorings.EncapsulateField.Extensions;
4-
using System;
54
using System.Collections.Generic;
65
using System.Linq;
7-
using System.Text;
8-
using System.Threading.Tasks;
96

107
namespace Rubberduck.Refactorings.EncapsulateField
118
{

Rubberduck.Refactorings/EncapsulateField/Validations/EncapsulateFieldConflictFinderBase.cs renamed to Rubberduck.Refactorings/EncapsulateField/ConflictDetection/EncapsulateFieldConflictFinderBase.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ public virtual bool TryValidateEncapsulationAttributes(IEncapsulateFieldCandidat
3939
return true;
4040
}
4141

42-
if (!field.NameValidator.IsValidVBAIdentifier(field.PropertyIdentifier, out errorMessage))
42+
var declarationType = field is IConvertToUDTMember udtMember
43+
? DeclarationType.UserDefinedTypeMember
44+
: field.Declaration.DeclarationType;
45+
46+
if (VBAIdentifierValidator.TryMatchInvalidIdentifierCriteria(field.PropertyIdentifier, declarationType, out errorMessage, field.Declaration.IsArray))
4347
{
4448
return false;
4549
}

Rubberduck.Refactorings/EncapsulateField/Validations/UseBackingFieldsStrategyConflictFinder.cs renamed to Rubberduck.Refactorings/EncapsulateField/ConflictDetection/UseBackingFieldsStrategyConflictFinder.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
using Rubberduck.Parsing.Symbols;
22
using Rubberduck.Parsing.VBA;
3-
using System;
43
using System.Collections.Generic;
54
using System.Linq;
6-
using System.Text;
7-
using System.Threading.Tasks;
85

96
namespace Rubberduck.Refactorings.EncapsulateField
107
{

Rubberduck.Refactorings/EncapsulateField/EncapsulateFieldCandidateFactory.cs

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,44 +16,23 @@ public class EncapsulateFieldCandidateFactory : IEncapsulateFieldCandidateFactor
1616
private readonly IDeclarationFinderProvider _declarationFinderProvider;
1717
private readonly ICodeBuilder _codeBuilder;
1818

19-
private readonly IValidateVBAIdentifiers _defaultNameValidator;
20-
private readonly IValidateVBAIdentifiers _udtNameValidator;
21-
private readonly IValidateVBAIdentifiers _udtMemberNameValidator;
22-
private readonly IValidateVBAIdentifiers _udtMemberArrayNameValidator;
23-
2419
public EncapsulateFieldCandidateFactory(IDeclarationFinderProvider declarationFinderProvider, ICodeBuilder codeBuilder)
2520
{
2621
_declarationFinderProvider = declarationFinderProvider;
2722
_codeBuilder = codeBuilder;
28-
29-
_defaultNameValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.Default);
30-
_udtNameValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedType);
31-
_udtMemberNameValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedTypeMember);
32-
_udtMemberArrayNameValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedTypeMemberArray);
3323
}
3424

3525
public IEncapsulateFieldCandidate Create(Declaration target)
36-
{
37-
var candidate= CreateCandidate(target, _defaultNameValidator);
38-
return candidate;
39-
}
40-
41-
private IEncapsulateFieldCandidate CreateCandidate(Declaration target, IValidateVBAIdentifiers validator)
4226
{
4327
if (target.IsUserDefinedType())
4428
{
45-
var udtField = new UserDefinedTypeCandidate(target, _udtNameValidator, _codeBuilder.BuildPropertyRhsParameterName) as IUserDefinedTypeCandidate;
29+
var udtField = new UserDefinedTypeCandidate(target, _codeBuilder.BuildPropertyRhsParameterName) as IUserDefinedTypeCandidate;
4630

4731
(Declaration udtDeclaration, IEnumerable<Declaration> udtMembers) = GetUDTAndMembersForField(udtField);
4832

4933
foreach (var udtMemberDeclaration in udtMembers)
5034
{
51-
var udtMemberValidator = _udtMemberNameValidator;
52-
if (udtMemberDeclaration.IsArray)
53-
{
54-
udtMemberValidator = _udtMemberArrayNameValidator;
55-
}
56-
var candidateUDTMember = new UserDefinedTypeMemberCandidate(CreateCandidate(udtMemberDeclaration, udtMemberValidator), udtField, _codeBuilder.BuildPropertyRhsParameterName) as IUserDefinedTypeMemberCandidate;
35+
var candidateUDTMember = new UserDefinedTypeMemberCandidate(Create(udtMemberDeclaration), udtField, _codeBuilder.BuildPropertyRhsParameterName) as IUserDefinedTypeMemberCandidate;
5736

5837
udtField.AddMember(candidateUDTMember);
5938
}
@@ -69,11 +48,11 @@ private IEncapsulateFieldCandidate CreateCandidate(Declaration target, IValidate
6948
}
7049
else if (target.IsArray)
7150
{
72-
var arrayCandidate = new ArrayCandidate(target, validator, _codeBuilder.BuildPropertyRhsParameterName);
51+
var arrayCandidate = new ArrayCandidate(target, _codeBuilder.BuildPropertyRhsParameterName);
7352
return arrayCandidate;
7453
}
7554

76-
var candidate = new EncapsulateFieldCandidate(target, validator, _codeBuilder.BuildPropertyRhsParameterName);
55+
var candidate = new EncapsulateFieldCandidate(target, _codeBuilder.BuildPropertyRhsParameterName);
7756
return candidate;
7857
}
7958

Rubberduck.Refactorings/EncapsulateField/FieldCandidates/ArrayCandidate.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public interface IArrayCandidate : IEncapsulateFieldCandidate
1616
public class ArrayCandidate : EncapsulateFieldCandidate, IArrayCandidate
1717
{
1818
private string _subscripts;
19-
public ArrayCandidate(Declaration declaration, IValidateVBAIdentifiers validator, Func<string,string> parameterNameBuilder)
20-
:base(declaration, validator, parameterNameBuilder)
19+
public ArrayCandidate(Declaration declaration, Func<string,string> parameterNameBuilder)
20+
:base(declaration, parameterNameBuilder)
2121
{
2222
ImplementLet = false;
2323
ImplementSet = false;

Rubberduck.Refactorings/EncapsulateField/FieldCandidates/ConvertToUDTMemberCandidate.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,6 @@ public bool IsReadOnly
8787

8888
public string ParameterName => _wrapped.ParameterName;
8989

90-
public IValidateVBAIdentifiers NameValidator
91-
{
92-
set { }
93-
get => _wrapped.Declaration.IsArray
94-
? EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedTypeMemberArray)
95-
: EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedTypeMember);
96-
}
97-
9890
public IEncapsulateFieldConflictFinder ConflictFinder
9991
{
10092
set => _wrapped.ConflictFinder = value;

Rubberduck.Refactorings/EncapsulateField/FieldCandidates/EncapsulateFieldCandidate.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public interface IEncapsulateFieldCandidate : IEncapsulateFieldRefactoringElemen
4343
bool ImplementSet { get; }
4444
bool IsReadOnly { set; get; }
4545
string ParameterName { get; }
46-
IValidateVBAIdentifiers NameValidator { set; get; }
4746
IEncapsulateFieldConflictFinder ConflictFinder { set; get; }
4847
bool TryValidateEncapsulationAttributes(out string errorMessage);
4948
string IdentifierForReference(IdentifierReference idRef);
@@ -60,13 +59,12 @@ public class EncapsulateFieldCandidate : IEncapsulateFieldCandidate
6059
protected EncapsulationIdentifiers _fieldAndProperty;
6160
private Func<string, string> _parameterNameBuilder;
6261

63-
public EncapsulateFieldCandidate(Declaration declaration, IValidateVBAIdentifiers identifierValidator, Func<string, string> parameterNameBuilder)
62+
public EncapsulateFieldCandidate(Declaration declaration, Func<string, string> parameterNameBuilder)
6463
{
6564
_target = declaration;
66-
NameValidator = identifierValidator;
6765
_parameterNameBuilder = parameterNameBuilder;
6866

69-
_fieldAndProperty = new EncapsulationIdentifiers(declaration.IdentifierName, identifierValidator);
67+
_fieldAndProperty = new EncapsulationIdentifiers(declaration.IdentifierName);
7068
IdentifierName = declaration.IdentifierName;
7169
PropertyAsTypeName = declaration.AsTypeName;
7270
_qmn = declaration.QualifiedModuleName;
@@ -110,8 +108,6 @@ public virtual string BackingIdentifier
110108

111109
public string BackingAsTypeName => Declaration.AsTypeName;
112110

113-
public virtual IValidateVBAIdentifiers NameValidator { set; get; }
114-
115111
public virtual IEncapsulateFieldConflictFinder ConflictFinder { set; get; }
116112

117113
public virtual bool TryValidateEncapsulationAttributes(out string errorMessage)

Rubberduck.Refactorings/EncapsulateField/FieldCandidates/EncapsulationIdentifiers.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using Rubberduck.Common;
22
using System.Collections.Generic;
33
using Rubberduck.Refactorings.EncapsulateField.Extensions;
4+
using Rubberduck.Refactorings.Common;
5+
using Rubberduck.Parsing.Symbols;
46

57
namespace Rubberduck.Refactorings.EncapsulateField
68
{
@@ -9,7 +11,7 @@ public class EncapsulationIdentifiers
911
private KeyValuePair<string, string> _fieldAndProperty;
1012
private string _targetIdentifier;
1113

12-
public EncapsulationIdentifiers(string field, IValidateVBAIdentifiers identifierValidator)
14+
public EncapsulationIdentifiers(string field)
1315
{
1416
_targetIdentifier = field;
1517

@@ -18,7 +20,7 @@ public EncapsulationIdentifiers(string field, IValidateVBAIdentifiers identifier
1820

1921
if (field.TryMatchHungarianNotationCriteria(out var nonHungarianName))
2022
{
21-
if (identifierValidator.IsValidVBAIdentifier(nonHungarianName, out _))
23+
if (!VBAIdentifierValidator.TryMatchInvalidIdentifierCriteria(nonHungarianName, DeclarationType.Variable, out _))
2224
{
2325
DefaultPropertyName = nonHungarianName;
2426
DefaultNewFieldName = field;
@@ -27,7 +29,7 @@ public EncapsulationIdentifiers(string field, IValidateVBAIdentifiers identifier
2729
else if (field.StartsWith("m_"))
2830
{
2931
var propertyName = field.Substring(2).CapitalizeFirstLetter();
30-
if (identifierValidator.IsValidVBAIdentifier(propertyName, out _))
32+
if (!VBAIdentifierValidator.TryMatchInvalidIdentifierCriteria(propertyName, DeclarationType.Property, out _))
3133
{
3234
DefaultPropertyName = propertyName;
3335
DefaultNewFieldName = field;

Rubberduck.Refactorings/EncapsulateField/FieldCandidates/UserDefinedTypeCandidate.cs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public interface IUserDefinedTypeCandidate : IEncapsulateFieldCandidate
1717

1818
public class UserDefinedTypeCandidate : EncapsulateFieldCandidate, IUserDefinedTypeCandidate
1919
{
20-
public UserDefinedTypeCandidate(Declaration declaration, IValidateVBAIdentifiers identifierValidator, Func<string,string> parameterNameBuilder)
21-
: base(declaration, identifierValidator, parameterNameBuilder)
20+
public UserDefinedTypeCandidate(Declaration declaration, Func<string,string> parameterNameBuilder)
21+
: base(declaration, parameterNameBuilder)
2222
{
2323
TypeDeclarationIsPrivate = declaration.HasPrivateAccessibility();
2424
}
@@ -48,20 +48,6 @@ public override string BackingIdentifier
4848
set => _fieldAndProperty.Field = value;
4949
}
5050

51-
private IValidateVBAIdentifiers _namesValidator;
52-
public override IValidateVBAIdentifiers NameValidator
53-
{
54-
set
55-
{
56-
_namesValidator = value;
57-
foreach (var member in Members)
58-
{
59-
member.NameValidator = value;
60-
}
61-
}
62-
get => _namesValidator;
63-
}
64-
6551
private IEncapsulateFieldConflictFinder _conflictsValidator;
6652
public override IEncapsulateFieldConflictFinder ConflictFinder
6753
{

Rubberduck.Refactorings/EncapsulateField/FieldCandidates/UserDefinedTypeMemberCandidate.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,6 @@ public string BackingIdentifier
4848

4949
public IUserDefinedTypeCandidate UDTField { private set; get; }
5050

51-
public IValidateVBAIdentifiers NameValidator
52-
{
53-
set => _wrappedCandidate.NameValidator = value;
54-
get => _wrappedCandidate.NameValidator;
55-
}
56-
5751
public IEncapsulateFieldConflictFinder ConflictFinder
5852
{
5953
set => _wrappedCandidate.ConflictFinder = value;

0 commit comments

Comments
 (0)