WebMarkupMin.Core.Parsers.XmlParser.ProcessEndTag C# (CSharp) Method

ProcessEndTag() private method

Process a end tag
private ProcessEndTag ( ) : bool
return bool
        private bool ProcessEndTag()
        {
            bool isProcessed = false;
            string content = _innerContext.SourceCode;
            int contentRemainderLength = _innerContext.RemainderLength;

            var match = _endTagRegex.Match(content, _innerContext.Position, contentRemainderLength);
            if (match.Success)
            {
                string endTag = match.Value;
                string endTagName = match.Groups["tagName"].Value;

                if (_tagStack.Count == 0)
                {
                    throw new MarkupParsingException(
                        string.Format(Strings.ErrorMessage_StartTagNotDeclared, endTagName),
                        _innerContext.NodeCoordinates, _innerContext.GetSourceFragment());
                }

                StackedXmlTag stackedTag = _tagStack.Pop();
                if (stackedTag.Name != endTagName)
                {
                    if (_tagStack.Any(t => t.Name == endTagName))
                    {
                        throw new MarkupParsingException(
                            string.Format(Strings.ErrorMessage_NotClosedTag, stackedTag.Name),
                            stackedTag.Coordinates,
                            SourceCodeNavigator.GetSourceFragment(_innerContext.SourceCode, stackedTag.Coordinates));
                    }

                    throw new MarkupParsingException(
                        string.Format(Strings.ErrorMessage_StartTagNotDeclared, endTagName),
                        _innerContext.NodeCoordinates, _innerContext.GetSourceFragment());
                }

                if (_handlers.EndTag != null)
                {
                    _handlers.EndTag(_context, endTagName);
                }

                _innerContext.IncreasePosition(endTag.Length);
                isProcessed = true;
            }

            return isProcessed;
        }