Ejemplo n.º 1
0
        private IEnumerable <Change> GetChanges(Change change)
        {
            // ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault
            switch (change.Operation)
            {
            case Operation.Modify:
                return(_differ.GetChanges(
                           ToComponents(change.PreviousValue),
                           ToComponents(change.NewValue)));

            case Operation.Delete:

                return(ToComponents(change.PreviousValue)
                       .Select((p, index) => new Change()
                {
                    Index = index,
                    Operation = Operation.Delete,
                    PreviousValue = p,
                    NewValue = null
                }));


            case Operation.Insert:
                return(ToComponents(change.NewValue)
                       .Select((p, index) => new Change()
                {
                    Index = index,
                    Operation = Operation.Insert,
                    PreviousValue = null,
                    NewValue = p
                }));
            }
            return(null);
        }