Ejemplo n.º 1
0
        public void EnsureNewLinesAfter(AstNode node, int blankLines)
        {
            if (formatter.FormattingMode != FormattingMode.Intrusive)
            {
                blankLines = 1;
            }
            int     foundBlankLines = 0;
            var     nextNode        = node.GetNextNode();
            AstNode lastNewLine     = null;

            while (nextNode != null)
            {
                if (!(nextNode is NewLineNode))
                {
                    break;
                }
                lastNewLine = nextNode;
                foundBlankLines++;
                nextNode = nextNode.GetNextNode();
            }
            if (nextNode == null)
            {
                return;
            }
            var start = document.GetOffset(node.EndLocation);
            var end   = document.GetOffset((lastNewLine ?? nextNode).StartLocation);
            var sb    = new StringBuilder(options.EolMarker.Length * blankLines);

            for (int i = 0; i < blankLines + (lastNewLine != null ? -1 : 0); i++)
            {
                sb.Append(options.EolMarker);
            }
            AddChange(start, end - start, sb.ToString());
        }
Ejemplo n.º 2
0
 void FixAttributes(EntityDeclaration entity)
 {
     if (entity.Attributes.Count > 0)
     {
         AstNode n = null;;
         foreach (var attr in entity.Attributes.Skip(1))
         {
             FixIndentation(attr);
             n = attr;
         }
         if (n != null)
         {
             FixIndentation(n.GetNextNode(NoWhitespacePredicate));
         }
     }
 }
Ejemplo n.º 3
0
        void FixOpenBrace(BraceStyle braceStyle, AstNode lbrace)
        {
            if (lbrace.IsNull)
            {
                return;
            }
            switch (braceStyle)
            {
            case BraceStyle.DoNotChange:
                return;

            case BraceStyle.BannerStyle:
            case BraceStyle.EndOfLine:
                var prev = lbrace.GetPrevNode();
                while (prev is NewLineNode)
                {
                    prev = prev.GetPrevNode();
                }
                if (prev is PreProcessorDirective)
                {
                    return;
                }
                int prevOffset = document.GetOffset(prev.EndLocation);

                if (prev is Comment || prev is PreProcessorDirective)
                {
                    int next = document.GetOffset(lbrace.GetNextNode().StartLocation);
                    AddChange(prevOffset, next - prevOffset, "");
                    while (prev is Comment || prev is PreProcessorDirective)
                    {
                        prev = prev.GetPrevNode();
                    }
                    prevOffset = document.GetOffset(prev.EndLocation);
                    AddChange(prevOffset, 0, " {");
                }
                else
                {
                    int braceOffset2 = document.GetOffset(lbrace.StartLocation);
                    AddChange(prevOffset, braceOffset2 - prevOffset, " ");
                }
                break;

            case BraceStyle.EndOfLineWithoutSpace:
                prev = lbrace.GetPrevNode();
                while (prev is NewLineNode)
                {
                    prev = prev.GetPrevNode();
                }
                if (prev is PreProcessorDirective)
                {
                    return;
                }
                prevOffset = document.GetOffset(prev.EndLocation);
                int braceOffset = document.GetOffset(lbrace.StartLocation);
                AddChange(prevOffset, braceOffset - prevOffset, "");
                break;

            case BraceStyle.NextLine:
                prev = lbrace.GetPrevNode();
                while (prev is NewLineNode)
                {
                    prev = prev.GetPrevNode();
                }
                if (prev is PreProcessorDirective)
                {
                    return;
                }
                prevOffset  = document.GetOffset(prev.EndLocation);
                braceOffset = document.GetOffset(lbrace.StartLocation);
                AddChange(prevOffset, braceOffset - prevOffset, options.EolMarker + curIndent.IndentString);
                break;

            case BraceStyle.NextLineShifted:
                prev = lbrace.GetPrevNode();
                while (prev is NewLineNode)
                {
                    prev = prev.GetPrevNode();
                }
                if (prev is PreProcessorDirective)
                {
                    return;
                }
                prevOffset  = document.GetOffset(prev.EndLocation);
                braceOffset = document.GetOffset(lbrace.StartLocation);
                curIndent.Push(IndentType.Block);
                AddChange(prevOffset, braceOffset - prevOffset, options.EolMarker + curIndent.IndentString);
                curIndent.Pop();
                break;

            case BraceStyle.NextLineShifted2:
                prev = lbrace.GetPrevNode();
                while (prev is NewLineNode)
                {
                    prev = prev.GetPrevNode();
                }
                if (prev is PreProcessorDirective)
                {
                    return;
                }
                prevOffset  = document.GetOffset(prev.EndLocation);
                braceOffset = document.GetOffset(lbrace.StartLocation);
                curIndent.Push(IndentType.Block);
                AddChange(prevOffset, braceOffset - prevOffset, options.EolMarker + curIndent.IndentString);
                curIndent.Pop();
                break;
            }
        }