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()); }
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)); } } }
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; } }