private static void RandomizeTag(IAbstractMarkupData markupData)
 {
     if (markupData is IPlaceholderTag tag)
     {
         tag.Properties.TagId = new TagId(Guid.NewGuid().ToString());
     }
 }
Example #2
0
 public void VisitPlaceholderTag(IPlaceholderTag tag)
 {
     if (ElementTypeToSearch == Token.TokenType.TagPlaceholder && tag.TagProperties.TagId.Id == ElementIdToSearch)
     {
         FoundElement = tag;
     }
 }
        private void DeleteNode(IAbstractMarkupData node)
        {
            //Remove node from tree
            int index = node.IndexInParent;
            IAbstractMarkupDataContainer parent = node.Parent;

            node.RemoveFromParent();

            //If this is a deleted revision marker then no more processing is required
            IRevisionMarker revisionMarker = node as IRevisionMarker;

            if (revisionMarker != null)
            {
                if (revisionMarker.Properties.RevisionType == revisionTypeToIgnore)
                {
                    return;
                }
            }

            //If a comment or inserted revision then copy children to parent at the index location of the original node we have removed
            IAbstractMarkupDataContainer container = node as IAbstractMarkupDataContainer;

            if (container.Count() > 0)
            {
                container.MoveItemsTo(parent, index, 0, container.Count());
            }
        }
Example #4
0
        private static void MergeMarkupData(ISegment segment, IDocumentItemFactory itemFactory, IPropertiesFactory propFactory)
        {
            Location textLocation = new Location(segment, true);

            IText prevText = null;

            do
            {
                if (textLocation.ItemAtLocation != null)
                {
                    IAbstractMarkupData currData = (IAbstractMarkupData)textLocation.ItemAtLocation.Clone();
                    IText currText = currData as IText;
                    if (currText == null)
                    {
                        prevText = null;
                    }
                    else
                    if (prevText == null)
                    {
                        prevText = currText;
                    }
                    else
                    {
                        prevText = itemFactory.CreateText(propFactory.CreateTextProperties(prevText.Properties.Text +
                                                                                           currText.Properties.Text));
                        textLocation.ItemAtLocation.Parent.RemoveAt(textLocation.ItemAtLocation.IndexInParent);

                        textLocation.MovePrevious();
                        textLocation.ItemAtLocation.Parent[textLocation.ItemAtLocation.IndexInParent] = prevText;
                    }
                }
            }while (textLocation.MoveNextSibling());
        }
Example #5
0
 public void VisitPlaceholderTag(IPlaceholderTag tag)
 {
     if (_element is ElementPlaceholder && tag.TagProperties.TagId.Id == _elementIdToSearch)
     {
         FoundElement = tag;
     }
 }
Example #6
0
 public void VisitLockedContent(ILockedContent lockedContent)
 {
     if (ElementTypeToSearch == Token.TokenType.LockedContent && _currentLockedContentId.ToString() == ElementIdToSearch)
     {
         FoundElement = lockedContent;
     }
     _currentLockedContentId++;
 }
        private void InsertTextBack(IAbstractMarkupData abstractMarkupData, IPlaceholderTag tag)
        {
            var elementContainer = abstractMarkupData.Parent;
            var untagedText      = _documentItemFactory.CreateText(_propertiesFactory.CreateTextProperties(tag.Properties.TagContent));

            elementContainer.Insert(tag.IndexInParent, untagedText);
            elementContainer.RemoveAt(tag.IndexInParent);
        }
Example #8
0
 private static bool IsRemovableItem(IAbstractMarkupData item)
 {
     return(typeof(IText).IsAssignableFrom(item.GetType()) ||
            typeof(ICommentMarker).IsAssignableFrom(item.GetType()) ||
            typeof(ILocationMarker).IsAssignableFrom(item.GetType()) ||
            typeof(ILockedContent).IsAssignableFrom(item.GetType()) ||
            typeof(IOtherMarker).IsAssignableFrom(item.GetType()) ||
            typeof(IRevisionMarker).IsAssignableFrom(item.GetType()));
 }
Example #9
0
 public IAbstractMarkupData GetTag(string elementID, IAbstractMarkupDataContainer objectToSearch, Token.TokenType tokenType)
 {
     ElementIdToSearch       = elementID;
     ElementTypeToSearch     = tokenType;
     FoundElement            = null;
     _currentLockedContentId = 0;
     VisitChildren(objectToSearch);
     return(FoundElement);
 }
Example #10
0
        public void VisitTagPair(ITagPair tagPair)
        {
            if ((ElementTypeToSearch == Token.TokenType.TagOpen || ElementTypeToSearch == Token.TokenType.TagClose) && tagPair.TagProperties.TagId.Id == ElementIdToSearch)
            {
                FoundElement = tagPair;
            }

            VisitChildren(tagPair);
        }
Example #11
0
        public void VisitLockedContent(ILockedContent lockedContent)
        {
            if (_element is ElementLocked && _currentLockedContentId.ToString() == _elementIdToSearch)
            {
                FoundElement = lockedContent;
            }

            _currentLockedContentId++;
        }
Example #12
0
        private void Log(IAbstractMarkupData data, string tagContent)
        {
            IAbstractMarkupDataContainer parent = data.Parent;
            while (!(parent is ISegment))
            {
                parent = ((IAbstractMarkupData)parent).Parent;
            }

            var segment = (ISegment)parent;
            reportGenerator.AddTagItem(segment.Properties.Id.Id, tagContent);
        }
        private static void CopyParagraph(IParagraph fromParagraph, IParagraph toParagraph)
        {
            toParagraph.Clear();

            while (fromParagraph.Count > 0)
            {
                IAbstractMarkupData markupData = fromParagraph[0];
                fromParagraph.RemoveAt(0);

                toParagraph.Add(markupData);
            }
        }
Example #14
0
        public void VisitTagPair(ITagPair tagPair)
        {
            if (_element is ElementTagPair elementTagPair)
            {
                if (elementTagPair.Type == Element.TagType.OpeningTag || elementTagPair.Type == Element.TagType.ClosingTag &&
                    tagPair.TagProperties.TagId.Id == _elementIdToSearch)
                {
                    FoundElement = tagPair;
                }

                VisitChildren(tagPair);
            }
        }
Example #15
0
        //check if the markup is in the list of the markups visited
        private bool ListContainsMarkupData(IAbstractMarkupData theMarkupData)
        {
            var contains = false;
            //Why isn't the text in a PlaceHolder in the segment?
            var newItemLocation = IsAncestorOfMarkup(theMarkupData, _segment) ? new Location(_segment, theMarkupData) : new Location(theMarkupData.Parent, theMarkupData);

            foreach (var item in _markupsListVisited)
            {
                if (item.Equals(theMarkupData))
                {
                    var itemLocation = IsAncestorOfMarkup(theMarkupData, _segment) ? new Location(_segment, item) : new Location(item.Parent, item);
                    contains = itemLocation.Equals(newItemLocation);
                }
            }
            return(contains);
        }
Example #16
0
        public void VisitPlaceholderTag(IPlaceholderTag tag)
        {
            if (FoundElement != null)
            {
                return;
            }

            // Dev Notes: should handle the tagContentId differently; potentially have priority
            var tagContentId = GetTagContentId(tag.TagProperties.TagContent);

            if (_element is ElementPlaceholder &&
                (tag.TagProperties.TagId.Id == _elementIdToSearch || tagContentId == _elementIdToSearch))
            {
                FoundElement = tag;
            }
        }
Example #17
0
        //check if "theAncestor" is an ancestor of "theMarkupData"
        private bool IsAncestorOfMarkup(IAbstractMarkupData theMarkupData, ISegment theAncestor)
        {
            var ret = false;

            if (theMarkupData == null || theAncestor == null)
            {
                return(ret);
            }
            var parent = theMarkupData.Parent;

            if (parent == null)
            {
                return(ret);
            }
            ret = parent.Equals(theAncestor) || theAncestor.Contains(theMarkupData);
            return(ret);
        }
        //check if "theAncestor" is an ancestor of "theMarkupData"
        private bool IsAncestorOfMarkup(IAbstractMarkupData theMarkupData, ISegment theAncestor)
        {
            bool ret = false;

            if (theMarkupData != null && theAncestor != null)
            {
                IAbstractMarkupDataContainer parent = theMarkupData.Parent;
                if (parent != null)
                {
                    if (parent.Equals(theAncestor))
                    {
                        ret = true;
                    }
                    else
                    {
                        ret = theAncestor.Contains(theMarkupData);
                    }
                }
            }
            return(ret);
        }
Example #19
0
        public void VisitTagPair(ITagPair tagPair)
        {
            if (FoundElement != null)
            {
                return;
            }

            if (_element is ElementTagPair elementTagPair)
            {
                // Dev Notes: should handle the tagContentId differently; potentially have priority
                var tagContentId = GetTagContentId(tagPair.TagProperties.TagContent);

                if ((elementTagPair.Type == Element.TagType.TagOpen || elementTagPair.Type == Element.TagType.TagClose) &&
                    (tagPair.TagProperties.TagId.Id == _elementIdToSearch || tagContentId == _elementIdToSearch))
                {
                    FoundElement = tagPair;
                }

                VisitChildren(tagPair);
            }
        }
Example #20
0
        protected virtual bool HasEmbededContent(IAbstractMarkupData markupData)
        {
            var tagPair = _currentContainer as ITagPair;

            if (tagPair == null)
            {
                return(false);
            }
            var metaDataContainer = tagPair.StartTagProperties as IMetaDataContainer;

            if (metaDataContainer == null || !metaDataContainer.HasMetaData)
            {
                return(false);
            }

            if (!metaDataContainer.MetaDataContainsKey(IsCData))
            {
                return(false);
            }

            return(bool.Parse(metaDataContainer.GetMetaData(IsCData)));
        }
Example #21
0
        /// <summary>
        /// Insert item to the proper container
        /// </summary>
        /// <param name="vector"></param>
        /// <param name="segment"></param>
        /// <param name="abstractItem"></param>
        private void InsertItemOnLocation(IEnumerable <int> vector, ref ISegment segment, IAbstractMarkupData abstractItem)
        {
            IAbstractMarkupDataContainer currentContainer = segment;

            foreach (var index in vector)
            {
                currentContainer = (IAbstractMarkupDataContainer)currentContainer[index];
            }

            currentContainer.Add(abstractItem);
        }
        protected virtual bool HasEmbededContent(IAbstractMarkupData markupData)
        {
            var tagPair = _currentContainer as ITagPair;
            if (tagPair == null) return false;
            var metaDataContainer = tagPair.StartTagProperties as IMetaDataContainer;
            if (metaDataContainer == null || !metaDataContainer.HasMetaData) return false;

            if (!metaDataContainer.MetaDataContainsKey(IsCData)) return false;

            return bool.Parse(metaDataContainer.GetMetaData(IsCData));

        }
Example #23
0
 public IEnumerator <IAbstractMarkupData> AbstractMarkupDataContainer(IAbstractMarkupData data)
 {
     yield return(data);
 }