protected override void Format() { var hasChild = target.ChildCount > 2; ctx.WriteSymbol(new FormatSymbol(target.GetChild(0) as ITerminalNode), WriteSymbolFlags.PushIndent); if (hasChild) { Format(1, target.ChildCount - 2); } var lastChild = target.GetChild(target.ChildCount - 1) as ITerminalNode; ctx.WriteSymbol(new FormatSymbol(lastChild, !hasChild, FormatSymbol.TrimSpaceFollow(lastChild.Symbol.Text)), WriteSymbolFlags.PopIndentBefore); }
public void WriteSymbol(FormatSymbol symbol, WriteSymbolFlags flags = WriteSymbolFlags.None) { var text = symbol.text; var newline = false; var insertSpace = false; if (!symbol.comment) { WriteComments(symbol.tokenIndex); } if (options.keepWraps) { while (symbol.line > line) { WriteLineBreak(); } } var prev = prevSymbol; if ((flags & WriteSymbolFlags.PopIndentBefore) != WriteSymbolFlags.None) { PopIndent(); } newline = FormatSymbol.IsLineBreak(prev); if (newline) { if (!symbol.noIndent) { WriteIndent(); } insertSpace = false; } else if ((FormatSymbol.TrimSpaceFollow(prev) || FormatSymbol.TrimSpaceAhead(symbol)) && !prev.forceSpaceFollow && !symbol.forceSpaceAhead) { insertSpace = false; } else { insertSpace = true; } if (insertSpace) { Write(FormatSymbol.SPACE); } var l = validIndentLevel; Write(symbol); if (!symbol.comment && scopes.Count > 0) { scopes.Peek().OnWriteSymbol(); } if ((flags & WriteSymbolFlags.PushIndent) != WriteSymbolFlags.None) { PushIndent(); } if ((flags & WriteSymbolFlags.PopIndentBefore) == WriteSymbolFlags.None && (flags & WriteSymbolFlags.PopIndent) != WriteSymbolFlags.None) { PopIndent(); } line += symbol.numLine - 1; }