private int UpdateLockedContent(ElementLocked elementLocked, int lockedContentId, ISegment originalTarget,
                                        ISegment originalSource, Stack <IAbstractMarkupDataContainer> containers)
        {
            if (elementLocked.Type == Element.TagType.OpeningTag)
            {
                var lockedContent = GetElement(lockedContentId.ToString(), originalTarget, originalSource, elementLocked);
                if (lockedContent == null)
                {
                    lockedContent = _segmentBuilder.CreateLockedContent();
                }

                if (lockedContent is IAbstractMarkupDataContainer lockedContentContainer)
                {
                    lockedContentContainer.Clear();

                    var container = containers.Peek();
                    container.Add(lockedContent);
                    containers.Push(lockedContentContainer);

                    lockedContentId++;
                }
            }
            else if (elementLocked.Type == Element.TagType.ClosingTag)
            {
                containers.Pop();
            }

            return(lockedContentId);
        }
Beispiel #2
0
        public void VisitLockedContent(ILockedContent lockedContent)
        {
            if (_ignoreTags)
            {
                return;
            }

            var element = new ElementLocked
            {
                Type = Element.TagType.OpeningTag
            };

            Elements.Add(element);

            VisitChilderen(lockedContent.Content);

            element = new ElementLocked
            {
                Type = Element.TagType.ClosingTag
            };

            Elements.Add(element);
        }