예제 #1
0
            /// <summary>
            /// Result of a Difference Lines operation
            /// </summary>
            /// <param name="items"></param>
            /// <param name="leftValue"></param>
            /// <param name="rightValue"></param>
            public LineDifferenceResult(Item[] items, string leftValue, string rightValue)
            {
                var aLines = leftValue.Split('\n');
                var bLines = rightValue.Split('\n');
                var n      = 0;

                for (var fdx = 0; fdx < items.Length; fdx++)
                {
                    var aItem = items[fdx];
                    while ((n < aItem.StartB) && (n < bLines.Length))
                    {
                        Unchanged.Add(bLines[n]);
                        n++;
                    }
                    for (var m = 0; m < aItem.DeletedA; m++)
                    {
                        Deletions.Add(aLines[aItem.StartA + m]);
                    }
                    while (n < aItem.StartB + aItem.InsertedB)
                    {
                        Additions.Add(bLines[n]);
                        n++;
                    }
                    while (n < bLines.Length)
                    {
                        Unchanged.Add(bLines[n]);
                        n++;
                    }
                }
            }
            public void Add(PhraseCustomization pc)
            {
                switch (pc.Type)
                {
                case PhraseCustomization.CustomizationType.AdditionAfter:
                case PhraseCustomization.CustomizationType.InsertionBefore:
                    if (AdditionsAndInsertions.Any(a => a.ModifiedPhrase == pc.ModifiedPhrase || a.Type == pc.Type))
                    {
                        m_isResolved = false;
                    }
                    AdditionsAndInsertions.Add(pc);
                    break;

                case PhraseCustomization.CustomizationType.Deletion:
                    Deletions.Add(pc);
                    if (Deletions.Count > 1)
                    {
                        m_isResolved = false;
                    }
                    break;

                case PhraseCustomization.CustomizationType.Modification:
                    if (Modification != null)
                    {
                        throw new InvalidOperationException("Only one modified version of a question/phrase is permitted. Question/phrase '" + pc.OriginalPhrase +
                                                            "' has already been modified as '" + Modification.ModifiedPhrase + "'. Value of subsequent modification attempt was: '" +
                                                            pc.ModifiedPhrase + "'.");
                    }
                    Modification = pc;
                    break;
                }
            }
예제 #3
0
        public void Remove(ITransient other)
        {
            if (other == null)
            {
                return;
            }

            Additions.RemoveRef(other);
            Deletions.Add(other);
        }
예제 #4
0
        public void Clear()
        {
            Additions.Clear();

            foreach (var tr in Contents)
            {
                Deletions.Add(tr);
            }

            PerformRemoves();
        }
 public void Reinstate(Guid userId)
 {
     Deleted = false;
     Deletions.Add(new Deletion(userId, Deleted, DateTime.UtcNow));
 }
 public void Delete(Guid userId)
 {
     Deleted = true;
     Deletions.Add(new Deletion(userId, Deleted, DateTime.UtcNow));
 }
예제 #7
0
 public void ReInstate(Guid userId)
 {
     Deletions.Add(new Deletion(false, userId, DateTime.UtcNow));
     Deleted = false;
 }