public override void Refactor(MoveFolderModel model, IRewriteSession rewriteSession)
        {
            var sourceFolderParent = model.FolderToMove.ParentFolder();
            var changeFolderModel  = new ChangeFolderModel(sourceFolderParent, model.ModulesToMove, model.TargetFolder);

            _changeFolder.Refactor(changeFolderModel, rewriteSession);
        }
示例#2
0
 public override void Refactor(MoveMultipleToFolderModel model, IRewriteSession rewriteSession)
 {
     foreach (var target in model.Targets.Distinct())
     {
         var targetModel = new MoveToFolderModel(target, model.TargetFolder);
         _moveToFolder.Refactor(targetModel, rewriteSession);
     }
 }
示例#3
0
 public override void Refactor(MoveMultipleFoldersModel model, IRewriteSession rewriteSession)
 {
     foreach (var sourceFolder in model.ModulesBySourceFolder.Keys)
     {
         var targetModel = new MoveFolderModel(sourceFolder, model.ModulesBySourceFolder[sourceFolder], model.TargetFolder);
         _moveFolder.Refactor(targetModel, rewriteSession);
     }
 }
示例#4
0
        private void Rename(IReadOnlyCollection <IEncapsulateFieldCandidate> fields, IRewriteSession rewriteSession)
        {
            var fieldToNewNamePairs = fields.Where(f => !f.BackingIdentifier.Equals(f.Declaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase))
                                      .Select(f => (f.Declaration, f.BackingIdentifier));

            var model = new ReplaceDeclarationIdentifierModel(fieldToNewNamePairs);

            _replaceDeclarationIdentifiers.Refactor(model, rewriteSession);
        }
        public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
        {
            var model = new ImplicitTypeToExplicitModel(result.Target)
            {
                ForceVariantAsType = true
            };

            _refactoring.Refactor(model, rewriteSession);
        }
        private void AddInterfaceMembersToClass(ExtractInterfaceModel model, IRewriteSession rewriteSession)
        {
            var targetModule       = model.TargetDeclaration.QualifiedModuleName;
            var interfaceName      = model.InterfaceName;
            var membersToImplement = model.SelectedMembers.Select(m => m.Member).ToList();

            var addMembersModel = new AddInterfaceImplementationsModel(targetModule, interfaceName, membersToImplement);

            _addImplementationsRefactoringAction.Refactor(addMembersModel, rewriteSession);
        }
        public virtual string Preview(TModel model)
        {
            var rewriteSession = RewriteSession(RewriteSessionCodeKind);

            _refactoringAction.Refactor(model, rewriteSession);
            var componentToShow = ComponentToShow(model);
            var rewriter        = rewriteSession.CheckOutModuleRewriter(componentToShow);

            return(rewriter.GetText());
        }
        public override void Refactor(RenameFolderModel model, IRewriteSession rewriteSession)
        {
            var sourceFolderParent = model.OriginalFolder.ParentFolder();
            var targetFolder       = string.IsNullOrEmpty(sourceFolderParent)
                ? model.NewSubFolder
                : $"{sourceFolderParent}{FolderExtensions.FolderDelimiter}{model.NewSubFolder}";

            var changeFolderModel = new ChangeFolderModel(model.OriginalFolder, model.ModulesToMove, targetFolder);

            _changeFolder.Refactor(changeFolderModel, rewriteSession);
        }
示例#9
0
        private void InsertNewContent(EncapsulateFieldUseBackingFieldModel model, List <IEncapsulateFieldCandidate> candidatesRequiringNewBackingFields, IRewriteSession rewriteSession)
        {
            var aggregator = model.NewContentAggregator ?? _newContentAggregatorFactory.Create();

            model.NewContentAggregator = null;

            var encapsulateFieldInsertNewCodeModel = new EncapsulateFieldInsertNewCodeModel(model.SelectedFieldCandidates)
            {
                CandidatesRequiringNewBackingFields = candidatesRequiringNewBackingFields,
                NewContentAggregator = aggregator
            };

            _encapsulateFieldInsertNewCodeRefactoringAction.Refactor(encapsulateFieldInsertNewCodeModel, rewriteSession);
        }
示例#10
0
        private void ReplaceEncapsulatedFieldReferences(IEnumerable <IEncapsulateFieldCandidate> fieldCandidates, IRewriteSession rewriteSession)
        {
            var model = new ReplaceReferencesModel()
            {
                ModuleQualifyExternalReferences = true
            };

            foreach (var field in fieldCandidates)
            {
                InitializeModel(model, field);
            }

            _replaceReferencesRefactoringAction.Refactor(model, rewriteSession);
        }
        private void InsertNewContent(EncapsulateFieldUseBackingUDTMemberModel model, IRewriteSession rewriteSession)
        {
            var aggregator = model.NewContentAggregator ?? _newContentAggregatorFactory.Create();

            model.NewContentAggregator = null;

            var encapsulateFieldInsertNewCodeModel = new EncapsulateFieldInsertNewCodeModel(model.SelectedFieldCandidates)
            {
                NewContentAggregator = aggregator,
                ObjectStateUDTField  = model.ObjectStateUDTField
            };

            _encapsulateFieldInsertNewCodeRefactoringAction.Refactor(encapsulateFieldInsertNewCodeModel, rewriteSession);
        }
示例#12
0
        private void ReplaceUDTMemberReferencesOfPrivateUDTFields(IEnumerable <IEncapsulateFieldCandidate> udtFieldCandidates, IRewriteSession rewriteSession)
        {
            if (!udtFieldCandidates.Any())
            {
                return;
            }

            var replacePrivateUDTMemberReferencesModel
                = _replaceUDTMemberReferencesModelFactory.Create(udtFieldCandidates.Select(f => f.Declaration).Cast <VariableDeclaration>());

            foreach (var udtfield in udtFieldCandidates)
            {
                InitializeModel(replacePrivateUDTMemberReferencesModel, udtfield);
            }
            _replaceUDTMemberReferencesRefactoringAction.Refactor(replacePrivateUDTMemberReferencesModel, rewriteSession);
        }
示例#13
0
        private void ImplementMissingMembers(ModuleDeclaration targetInterface, ModuleDeclaration targetClass, IRewriteSession rewriteSession)
        {
            var implemented = targetClass.Members
                              .Where(decl => decl is ModuleBodyElementDeclaration member && ReferenceEquals(member.InterfaceImplemented, targetInterface))
                              .Cast <ModuleBodyElementDeclaration>()
                              .Select(member => member.InterfaceMemberImplemented).ToList();

            var interfaceMembers = targetInterface.Members.OrderBy(member => member.Selection.StartLine)
                                   .ThenBy(member => member.Selection.StartColumn);

            var nonImplementedMembers = interfaceMembers.Where(member => !implemented.Contains(member));

            var addMembersModel = new AddInterfaceImplementationsModel(targetClass.QualifiedModuleName, targetInterface.IdentifierName, nonImplementedMembers.ToList());

            _addImplementationsRefactoringAction.Refactor(addMembersModel, rewriteSession);
        }
        private void ReplaceEncapsulatedFieldReferences(IEnumerable <IEncapsulateFieldCandidate> nonPrivateUDTFields, IObjectStateUDT objectStateUDTField, IRewriteSession rewriteSession)
        {
            if (!nonPrivateUDTFields.Any())
            {
                return;
            }

            var replaceReferencesModel = new ReplaceReferencesModel()
            {
                ModuleQualifyExternalReferences = true,
            };

            foreach (var field in nonPrivateUDTFields)
            {
                InitializeModel(replaceReferencesModel, field, objectStateUDTField);
            }

            _replaceReferencesRefactoringAction.Refactor(replaceReferencesModel, rewriteSession);
        }
        private void ModifyFields(EncapsulateFieldUseBackingUDTMemberModel encapsulateFieldModel, IRewriteSession rewriteSession)
        {
            var rewriter = rewriteSession.CheckOutModuleRewriter(encapsulateFieldModel.QualifiedModuleName);

            if (encapsulateFieldModel.ObjectStateUDTField.IsExistingDeclaration)
            {
                var model = new ModifyUserDefinedTypeModel(encapsulateFieldModel.ObjectStateUDTField.AsTypeDeclaration);

                foreach (var candidate in encapsulateFieldModel.SelectedFieldCandidates)
                {
                    model.AddNewMemberPrototype(candidate.Declaration, candidate.BackingIdentifier);
                }

                _modifyUDTRefactoringAction.Refactor(model, rewriteSession);
            }

            rewriter.RemoveVariables(encapsulateFieldModel.SelectedFieldCandidates.Select(f => f.Declaration)
                                     .Cast <VariableDeclaration>());
        }
示例#16
0
        public override void Refactor(ChangeFolderModel model, IRewriteSession rewriteSession)
        {
            var originalFolder = model.OriginalFolder;

            foreach (var module in model.ModulesToMove.Distinct())
            {
                var currentFolder = module.CustomFolder;

                if (!currentFolder.StartsWith(originalFolder))
                {
                    continue;
                }

                var newFolder = currentFolder.Equals(originalFolder)
                    ? model.NewFolder
                    : $"{model.NewFolder}{FolderExtensions.FolderDelimiter}{currentFolder.SubFolderPathRelativeTo(model.OriginalFolder)}";

                var moduleModel = new MoveToFolderModel(module, newFolder);
                _moveToFolder.Refactor(moduleModel, rewriteSession);
            }
        }
示例#17
0
 public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
 {
     _refactoring.Refactor(new ImplicitTypeToExplicitModel(result.Target), rewriteSession);
 }