Exemplo n.º 1
0
        /// <summary>
        /// End tags handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="tagName">Tag name</param>
        private void EndTagHandler(MarkupParsingContext context, string tagName)
        {
            XmlNodeType previousNodeType = _currentNodeType;
            string      previousText     = _currentText;

            _currentNodeType = XmlNodeType.EndTag;
            _currentText     = string.Empty;

            XmlMinificationOutputWriter output = _output;

            if (_settings.CollapseTagsWithoutContent && previousNodeType == XmlNodeType.StartTag &&
                previousText.Length == 0)
            {
                if (output.TransformLastStartTagToEmptyTag(_settings.RenderEmptyTagsWithSpace))
                {
                    output.Flush();
                    return;
                }
            }

            if (_settings.MinifyWhitespace && previousNodeType == XmlNodeType.Text &&
                (_endTagBeforeText || _emptyTagBeforeText))
            {
                output.RemoveLastWhitespaceItems();
            }

            // Add end tag to buffer
            output.Write("</");
            output.Write(tagName);
            output.Write(">");

            output.Flush();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Start tags handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="tagName">Tag name</param>
        /// <param name="attributes">List of attributes</param>
        private void StartTagHandler(MarkupParsingContext context, string tagName,
                                     List <XmlAttribute> attributes)
        {
            XmlNodeType previousNodeType = _currentNodeType;

            _currentNodeType = XmlNodeType.StartTag;
            _currentText     = string.Empty;

            XmlMinificationOutputWriter output = _output;

            if (_settings.MinifyWhitespace && previousNodeType == XmlNodeType.Text &&
                (_startTagBeforeText || _endTagBeforeText || _emptyTagBeforeText ||
                 _ignoredFragmentBeforeText || _xmlDeclarationBeforeText ||
                 _processingInstructionBeforeText || _doctypeBeforeText))
            {
                output.RemoveLastWhitespaceItems();
            }

            output.Flush();

            output.Write("<");
            output.Write(tagName);
            WriteAttributes(attributes);
            output.Write(">");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Document type declaration handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="doctype">Document type declaration</param>
        private void DoctypeDelegateHandler(MarkupParsingContext context, string doctype)
        {
            _currentNodeType = XmlNodeType.Doctype;

            XmlMinificationOutputWriter output = _output;

            if (_settings.MinifyWhitespace)
            {
                output.RemoveLastWhitespaceItems();
            }

            output.Write(Utils.CollapseWhitespace(doctype));
            output.Flush();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Ignored fragments handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="fragment">Ignored fragment</param>
        private void IgnoredFragmentHandler(MarkupParsingContext context, string fragment)
        {
            _currentNodeType = XmlNodeType.IgnoredFragment;

            XmlMinificationOutputWriter output = _output;

            if (_settings.MinifyWhitespace)
            {
                output.RemoveLastWhitespaceItems();
            }

            if (fragment.Length > 0)
            {
                output.Write(fragment);
                output.Flush();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// XML declaration handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="attributes">List of attributes</param>
        private void XmlDeclarationHandler(MarkupParsingContext context, List <XmlAttribute> attributes)
        {
            _currentNodeType = XmlNodeType.XmlDeclaration;

            XmlMinificationOutputWriter output = _output;

            if (_settings.MinifyWhitespace)
            {
                output.RemoveLastWhitespaceItems();
            }

            output.Write("<?xml");
            WriteAttributes(attributes);
            output.Write("?>");

            output.Flush();
        }
Exemplo n.º 6
0
        /// <summary>
        /// Processing instruction handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="instructionName">Instruction name</param>
        /// <param name="attributes">List of attributes</param>
        private void ProcessingInstructionHandler(MarkupParsingContext context, string instructionName,
                                                  List <XmlAttribute> attributes)
        {
            _currentNodeType = XmlNodeType.ProcessingInstruction;

            XmlMinificationOutputWriter output = _output;

            if (_settings.MinifyWhitespace)
            {
                output.RemoveLastWhitespaceItems();
            }

            output.Write("<?");
            output.Write(instructionName);
            WriteAttributes(attributes);
            output.Write("?>");

            output.Flush();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Empty tags handler
        /// </summary>
        /// <param name="context">Markup parsing context</param>
        /// <param name="tagName">Tag name</param>
        /// <param name="attributes">List of attributes</param>
        private void EmptyTagHandler(MarkupParsingContext context, string tagName,
                                     List <XmlAttribute> attributes)
        {
            XmlNodeType previousNodeType = _currentNodeType;

            _currentNodeType = XmlNodeType.EmptyTag;
            _currentText     = string.Empty;

            XmlMinificationOutputWriter output = _output;

            if (_settings.MinifyWhitespace && previousNodeType == XmlNodeType.Text &&
                (_startTagBeforeText || _endTagBeforeText || _emptyTagBeforeText))
            {
                output.RemoveLastWhitespaceItems();
            }

            output.Write("<");
            output.Write(tagName);
            WriteAttributes(attributes);
            output.Write(_settings.RenderEmptyTagsWithSpace ? " />" : "/>");

            output.Flush();
        }