Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }