예제 #1
0
        private void FormatXmlElementEndTag(XmlElementEndTagSyntax node, ElementFormatting formatting)
        {
            if (formatting.HasFlag(ElementFormatting.SnugEnd))
            {
                Break(BreakMode.SuppressWordBreak);
            }
            else if (formatting.HasFlag(ElementFormatting.Block))
            {
                Break(BreakMode.LineBreak);
            }

            // A snug-end element normally causes unindentation to happen after the end tag, but
            // there is a special case for when the content of a snug block element forced a line
            // break before the end tag (presumably because the content was a block element).
            // This makes a snug block element that contains a block element behave like a block
            // element.
            bool unsnug           = formatting.HasFlag(ElementFormatting.Block | ElementFormatting.Snug) && _breakMode.HasFlag(BreakMode.LineBreak);
            bool unindentAfterTag = formatting.HasFlag(ElementFormatting.SnugEnd) && !unsnug;

            if (formatting.HasFlag(ElementFormatting.Indent) && !unindentAfterTag)
            {
                _interiorIndent -= _indentSize;
            }

            if (node.HasLeadingTrivia)
            {
                AddTrivia(node.GetLeadingTrivia());
            }

            if (formatting.HasFlag(ElementFormatting.Preserve))
            {
                _preserve -= 1;
            }

            FormatElementEndTag(node);

            if (node.HasTrailingTrivia)
            {
                AddTrivia(node.GetTrailingTrivia());
            }

            if (formatting.HasFlag(ElementFormatting.Block))
            {
                Break(BreakMode.LineBreak);
            }

            if (formatting.HasFlag(ElementFormatting.Indent) && unindentAfterTag)
            {
                _interiorIndent -= _indentSize;
            }
        }
예제 #2
0
        private void FormatXmlElementStartTag(XmlElementStartTagSyntax node, ElementFormatting formatting)
        {
            if (formatting.HasFlag(ElementFormatting.Block))
            {
                Break(BreakMode.LineBreak);
            }

            if (node.HasLeadingTrivia)
            {
                AddTrivia(node.GetLeadingTrivia());
            }

            FormatElementStartTag(node);

            if (formatting.HasFlag(ElementFormatting.Preserve))
            {
                _preserve += 1;
            }

            if (node.HasTrailingTrivia)
            {
                AddTrivia(node.GetTrailingTrivia());
            }

            if (formatting.HasFlag(ElementFormatting.SnugStart))
            {
                Break(BreakMode.SuppressWordBreak);
            }
            else if (formatting.HasFlag(ElementFormatting.Block))
            {
                Break(BreakMode.LineBreak);
            }

            if (formatting.HasFlag(ElementFormatting.Indent))
            {
                _interiorIndent += _indentSize;
            }
        }