/
EncapsulationIdentifiers.cs
64 lines (54 loc) · 2.11 KB
/
EncapsulationIdentifiers.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using Rubberduck.Common;
using System.Collections.Generic;
using Rubberduck.Refactorings.EncapsulateField.Extensions;
namespace Rubberduck.Refactorings.EncapsulateField
{
public class EncapsulationIdentifiers
{
private KeyValuePair<string, string> _fieldAndProperty;
private string _targetIdentifier;
public EncapsulationIdentifiers(string field, IValidateVBAIdentifiers identifierValidator)
{
_targetIdentifier = field;
DefaultPropertyName = field.CapitalizeFirstLetter();
DefaultNewFieldName = (field.ToLowerCaseFirstLetter()).IncrementEncapsulationIdentifier();
if (field.TryMatchHungarianNotationCriteria(out var nonHungarianName))
{
if (identifierValidator.IsValidVBAIdentifier(nonHungarianName, out _))
{
DefaultPropertyName = nonHungarianName;
DefaultNewFieldName = field;
}
}
else if (field.StartsWith("m_"))
{
var propertyName = field.Substring(2).CapitalizeFirstLetter();
if (identifierValidator.IsValidVBAIdentifier(propertyName, out _))
{
DefaultPropertyName = propertyName;
DefaultNewFieldName = field;
}
}
_fieldAndProperty = new KeyValuePair<string, string>(DefaultNewFieldName, DefaultPropertyName);
}
public string TargetFieldName => _targetIdentifier;
public string DefaultPropertyName { private set; get; }
public string DefaultNewFieldName { private set; get; }
public string Field
{
get => _fieldAndProperty.Key;
set
{
_fieldAndProperty = new KeyValuePair<string, string>(value, _fieldAndProperty.Value);
}
}
public string Property
{
get => _fieldAndProperty.Value;
set
{
_fieldAndProperty = new KeyValuePair<string, string>(_fieldAndProperty.Key, value);
}
}
}
}