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 EncapsulateFieldCandidate(Declaration declaration, IValidateVBAIdentifiers identifierValidator) { _target = declaration; NameValidator = identifierValidator; _rhsParameterIdentifierName = Resources.Refactorings.Refactorings.CodeBuilder_DefaultPropertyRHSParam; _fieldAndProperty = new EncapsulationIdentifiers(declaration.IdentifierName, identifierValidator); IdentifierName = declaration.IdentifierName; PropertyAsTypeName = declaration.AsTypeName; _qmn = declaration.QualifiedModuleName; CanBeReadWrite = true; _uniqueID = $"{_qmn.Name}.{declaration.IdentifierName}"; _hashCode = _uniqueID.GetHashCode(); ImplementLet = true; ImplementSet = false; if (_target.IsEnumField() && _target.AsTypeDeclaration.HasPrivateAccessibility()) { //5.3.1 The declared type of a function declaration //may not be a private enum name. PropertyAsTypeName = Tokens.Long; } else if (_target.AsTypeName.Equals(Tokens.Variant) && !_target.IsArray) { ImplementSet = true; } else if (Declaration.IsObject) { ImplementLet = false; ImplementSet = true; } }
public ArrayCandidate(Declaration declaration, IValidateVBAIdentifiers validator) : base(declaration, validator) { ImplementLet = false; ImplementSet = false; PropertyAsTypeName = Tokens.Variant; CanBeReadWrite = false; IsReadOnly = true; _subscripts = string.Empty; if (declaration.Context.TryGetChildContext <VBAParser.SubscriptsContext>(out var ctxt)) { _subscripts = ctxt.GetText(); } }
private IEncapsulateFieldCandidate CreateCandidate(Declaration target, IValidateVBAIdentifiers validator) { if (target.IsUserDefinedType()) { var udtValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedType); var udtField = new UserDefinedTypeCandidate(target, udtValidator) as IUserDefinedTypeCandidate; (Declaration udtDeclaration, IEnumerable <Declaration> udtMembers) = GetUDTAndMembersForField(udtField); udtField.TypeDeclarationIsPrivate = udtDeclaration.HasPrivateAccessibility(); udtField.NameValidator = udtValidator; foreach (var udtMemberDeclaration in udtMembers) { var udtMemberValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedTypeMember); if (udtMemberDeclaration.IsArray) { udtMemberValidator = EncapsulateFieldValidationsProvider.NameOnlyValidator(NameValidators.UserDefinedTypeMemberArray); } var candidateUDTMember = new UserDefinedTypeMemberCandidate(CreateCandidate(udtMemberDeclaration, udtMemberValidator), udtField) as IUserDefinedTypeMemberCandidate; udtField.AddMember(candidateUDTMember); } var udtVariablesOfSameType = _declarationFinderProvider.DeclarationFinder.UserDeclarations(DeclarationType.Variable) .Where(v => v.AsTypeDeclaration == udtDeclaration); udtField.CanBeObjectStateUDT = udtField.TypeDeclarationIsPrivate && udtField.Declaration.HasPrivateAccessibility() && udtVariablesOfSameType.Count() == 1; return(udtField); } else if (target.IsArray) { return(new ArrayCandidate(target, validator)); } var candidate = new EncapsulateFieldCandidate(target, validator); return(candidate); }
public UserDefinedTypeCandidate(Declaration declaration, IValidateVBAIdentifiers identifierValidator) : base(declaration, identifierValidator) { }