internal List <Change> Diff() { List <Change> changes = new List <Change>(); //Removed and Added Types changes.AddRange(DiffTools.AddedElements(oldTypes, newTypes, t => new TypeAddedChange((IGraphType)t))); changes.AddRange(DiffTools.RemovedElements(oldTypes, newTypes, t => new TypeRemovedChange((IGraphType)t))); //Type Diff for common types foreach (var newType in this.newTypes) { var oldType = this.oldTypes.Where(t => t.Name.Equals(newType.Name)).SingleOrDefault(); if (oldType != null) { changes.AddRange(ChangesInType(oldType, newType)); } } //# Diff Schemas changes.AddRange(ChangesInSchema()); // Diff Directives changes.AddRange(ChangesInDirectives()); return(changes); }
private IEnumerable <Change> ChangesInDirectives() { List <Change> changes = new List <Change>(); changes.AddRange(DiffTools.AddedElements(oldDirectives, newDirectives, d => new DirectiveAdded((DirectiveGraphType)d))); changes.AddRange(DiffTools.RemovedElements(oldDirectives, newDirectives, d => new DirectiveRemoved((DirectiveGraphType)d))); foreach (var newDirective in this.newDirectives) { var oldDirective = oldDirectives.Where(t => t.Name.Equals(newDirective.Name)).SingleOrDefault(); if (oldDirective != null) { changes.AddRange(new Directive(oldDirective, newDirective).Diff()); } } return(changes); }