Esempio n. 1
0
        private void AppendFileChanges(
            IEnumerable <DocumentId> changedDocuments,
            ArrayBuilder <AbstractChange> builder
            )
        {
            // Avoid showing linked changes to linked files multiple times.
            var linkedDocumentIds = new HashSet <DocumentId>();

            var orderedChangedDocuments = changedDocuments
                                          .GroupBy(d => d.ProjectId)
                                          .OrderByDescending(g => g.Count())
                                          .Flatten();

            foreach (var documentId in orderedChangedDocuments)
            {
                if (linkedDocumentIds.Contains(documentId))
                {
                    continue;
                }

                var left  = _oldSolution.GetTextDocument(documentId);
                var right = _newSolution.GetTextDocument(documentId);

                if (left is Document leftDocument)
                {
                    linkedDocumentIds.AddRange(leftDocument.GetLinkedDocumentIds());
                }
                else if (right is Document rightDocument)
                {
                    // Added document.
                    linkedDocumentIds.AddRange(rightDocument.GetLinkedDocumentIds());
                }

                var fileChange = new FileChange(
                    left,
                    right,
                    _componentModel,
                    _topLevelChange,
                    this,
                    _imageService
                    );
                if (fileChange.Children.Changes.Length > 0)
                {
                    builder.Add(fileChange);
                }
            }
        }
Esempio n. 2
0
        private void AppendFileChanges(IEnumerable<DocumentId> changedDocuments, ArrayBuilder<AbstractChange> builder)
        {
            // Avoid showing linked changes to linked files multiple times.
            var linkedDocumentIds = new HashSet<DocumentId>();

            var orderedChangedDocuments = changedDocuments.GroupBy(d => d.ProjectId).OrderByDescending(g => g.Count()).Flatten();

            foreach (var documentId in orderedChangedDocuments)
            {
                if (linkedDocumentIds.Contains(documentId))
                {
                    continue;
                }

                var left = _oldSolution.GetTextDocument(documentId);
                var right = _newSolution.GetTextDocument(documentId);

                var leftDocument = left as Document;
                var rightDocument = right as Document;

                if (leftDocument != null)
                {
                    linkedDocumentIds.AddRange(leftDocument.GetLinkedDocumentIds());
                }
                else if (rightDocument != null)
                {
                    // Added document.
                    linkedDocumentIds.AddRange(rightDocument.GetLinkedDocumentIds());
                }

                var fileChange = new FileChange(left, right, _componentModel, _topLevelChange, this, _imageService);
                if (fileChange.Children.Changes.Length > 0)
                {
                    builder.Add(fileChange);
                }
            }
        }